{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "38cde886",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/stefan/.conda/envs/pts/lib/python3.8/site-packages/geopandas/_compat.py:123: UserWarning: The Shapely GEOS version (3.8.0-CAPI-1.13.1 ) is incompatible with the GEOS version PyGEOS was compiled with (3.10.4-CAPI-1.16.2). Conversions between both will be slow.\n",
      "  warnings.warn(\n",
      "/home/stefan/.conda/envs/pts/lib/python3.8/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.4\n",
      "  warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import geopandas as gpd\n",
    "import seaborn as sns\n",
    "\n",
    "sns.set_context(\"paper\")\n",
    "sns.set_style(\"whitegrid\")\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.rcParams[\"svg.fonttype\"] = \"none\"\n",
    "from sklearn.metrics import mean_absolute_percentage_error, mean_squared_error, r2_score\n",
    "\n",
    "sns.set_color_codes()\n",
    "from glob import glob\n",
    "from itertools import product\n",
    "import pickle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "358d4bc2",
   "metadata": {},
   "outputs": [],
   "source": [
    "target_vars = [\"BMag_ha\", \"V_ha\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "30bad65e",
   "metadata": {},
   "outputs": [],
   "source": [
    "bias_correct_splits = [\"val\", \"train\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "4d80056e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# choose one of test, train, val\n",
    "splits = [\"train\", \"val\", \"test\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "93cd866d",
   "metadata": {},
   "outputs": [],
   "source": [
    "models = {\n",
    "    \"MSENet14\": (\n",
    "        f\"results_new/SENet14_xy_??.gpkg\",\n",
    "    ),\n",
    "    \n",
    "    \"MSENet14 < 1y 100%\": (\n",
    "        f\"results_size/SENet14_1y_xy_treeadd_??.gpkg\",\n",
    "    ),\n",
    "\n",
    "    \"MSENet14 < 1y 75%\": (\n",
    "        f\"results_size/SENet14_75_1y_xy_treeadd_??.gpkg\",\n",
    "    ),    \n",
    "\n",
    "    \"MSENet14 < 1y 50%\": (\n",
    "        f\"results_size/SENet14_50_1y_xy_treeadd_??.gpkg\",\n",
    "    ),\n",
    "\n",
    "    \"MSENet14 < 1y 25%\": (\n",
    "        f\"results_size/SENet14_25_1y_xy_treeadd_??.gpkg\",\n",
    "    ),\n",
    "\n",
    "    \"MSENet14 < 1y 12.5%\": (\n",
    "        f\"results_size/SENet14_12_1y_xy_treeadd_??.gpkg\",\n",
    "    ),\n",
    "\n",
    "    \"MSENet14 < 1y 6.25%\": (\n",
    "        f\"results_size/SENet14_6_1y_xy_treeadd_??.gpkg\",\n",
    "    ),\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "49266c45-aa7e-41a0-a704-f6bcc07bff48",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('results_size.pickle', 'rb') as handle:\n",
    "    results = pickle.load(handle)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "aebad451-aaa4-4ad8-812e-b2713cdffe8d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# set number of instance\n",
    "results[\"MSENet14\"].eval(\"n_samples = 4270\", inplace=True)\n",
    "results[\"MSENet14 < 1y 100%\"].eval(\"n_samples = 2636\", inplace=True)\n",
    "results[\"MSENet14 < 1y 75%\"].eval(\"n_samples = 1977\", inplace=True)\n",
    "results[\"MSENet14 < 1y 50%\"].eval(\"n_samples = 1318\", inplace=True)\n",
    "results[\"MSENet14 < 1y 25%\"].eval(\"n_samples = 659\", inplace=True)\n",
    "results[\"MSENet14 < 1y 12.5%\"].eval(\"n_samples = 330\", inplace=True)\n",
    "results[\"MSENet14 < 1y 6.25%\"].eval(\"n_samples = 165\", inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f20b57b-0f00-4b69-8585-71a5ee12e3e0",
   "metadata": {},
   "source": [
    "# Bias correction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "d4c831b4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSENet14 0\n",
      "0.9151888974556669\n",
      "MSENet14 2\n",
      "0.9151888974556669\n",
      "MSENet14 3\n",
      "0.9151888974556669\n",
      "MSENet14 4\n",
      "0.9151888974556669\n",
      "MSENet14 5\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 100% 1\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 100% 2\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 100% 3\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 100% 4\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 100% 5\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 75% 0\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 75% 1\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 75% 2\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 75% 3\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 75% 4\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 50% 0\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 50% 1\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 50% 2\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 50% 3\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 50% 5\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 25% 1\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 25% 2\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 25% 3\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 25% 4\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 25% 5\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 12.5% 0\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 12.5% 1\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 12.5% 2\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 12.5% 3\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 12.5% 4\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 6.25% 0\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 6.25% 1\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 6.25% 2\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 6.25% 3\n",
      "0.9151888974556669\n",
      "MSENet14 < 1y 6.25% 5\n",
      "0.9151888974556669\n"
     ]
    }
   ],
   "source": [
    "# get bias correction\n",
    "# we do not include the 0 predictions into the adjustment since they come from a different data distribution\n",
    "\n",
    "deltas = {}\n",
    "results_corrected = {}\n",
    "exclude_1y = False\n",
    "exclude_pred_0 = False\n",
    "clip_0 = False\n",
    "for model in models:\n",
    "    if \"treeval\" in model: # using the original correction\n",
    "        continue\n",
    "    corrected = []\n",
    "    corrected_treeval = []\n",
    "    for run in pd.unique(results[model][\"run\"]):\n",
    "        print(model, run)\n",
    "        pred_vars = [f\"{v}_pred\" for v in target_vars]\n",
    "        preds_cal = pd.concat(\n",
    "            [\n",
    "                results[model].query(f\"(run == {run}) & (split == @split)\")\n",
    "                for split in bias_correct_splits\n",
    "            ],\n",
    "            axis=0,\n",
    "        )[target_vars + pred_vars + [\"mask\", \"temp_diff_years\"] ].copy(deep=True)            \n",
    "        \n",
    "        #reds_cal = preds_cal.sample(len(preds_cal))\n",
    "        \n",
    "        mask = np.ones_like(preds_cal[\"mask\"])\n",
    "        if exclude_1y:\n",
    "            mask &= (preds_cal[\"temp_diff_years\"] <= 1)\n",
    "        if exclude_pred_0:\n",
    "            mask &= ~preds_cal[\"mask\"]\n",
    "            \n",
    "        correct_ = ~mask == (preds_cal[target_vars] == 0).any(axis=1)\n",
    "        print(correct_.sum() / len(correct_))\n",
    "        #print(f\"num vals != 0: {mask.sum()}\")\n",
    "        y_cal_ = preds_cal[target_vars][mask].values\n",
    "        preds_cal_ = preds_cal[pred_vars][mask].values\n",
    "\n",
    "        '''\n",
    "        ds = []\n",
    "        num_vals = 100\n",
    "        for i in range(0, len(y_cal_), num_vals):\n",
    "            mm = np.ones(len(y_cal_), dtype=bool)\n",
    "            mm[i:i+num_vals] = False\n",
    "            ds.append((\n",
    "                y_cal_[mm].astype(np.float64).sum(0)\n",
    "                - preds_cal_[mm].astype(np.float64).sum(0)\n",
    "            ) / (mm.sum()))\n",
    "        delta = np.median(ds, 0)\n",
    "        '''\n",
    "        delta = (y_cal_.astype(np.float64).sum(0)\n",
    "                - preds_cal_.astype(np.float64).sum(0)) / (len(y_cal_))\n",
    "        deltas[model, run] = delta\n",
    "        \n",
    "        # check if calibration is close to 0 on calibration set\n",
    "        assert np.isclose(0, y_cal_.sum(0) - ((preds_cal_ + delta).sum(0))).all() \n",
    "        \n",
    "        # apply delta to all values\n",
    "        df = results[model].query(f\"run == {run}\")[target_vars + pred_vars + [\"run\", \"mask\", \"split\", \"n_samples\"]]\n",
    "        dff = df[pred_vars]\n",
    "        if exclude_pred_0:\n",
    "            mask = ~df[[\"mask\"]].values\n",
    "        else:\n",
    "            mask = np.ones_like(df[[\"mask\"]])\n",
    "        df[pred_vars] = (dff + delta) * mask + (~mask) * dff\n",
    "        if clip_0:\n",
    "            df[pred_vars] = df[pred_vars].mask(dff < 0.00, 0.0)\n",
    "        corrected.append(df)\n",
    "\n",
    "    results_corrected[model] = pd.concat(corrected, axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "64349efc-e498-4cd7-9b47-bb677f5a0aab",
   "metadata": {},
   "source": [
    "# Evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "eb2c8782",
   "metadata": {},
   "outputs": [],
   "source": [
    "def cohen_d(y1_pred, y2_pred):\n",
    "    mse1 = (y1_pred**2).mean()\n",
    "    mse2 = (y2_pred**2).mean()\n",
    "    \n",
    "    diff = mse1 - mse2\n",
    "    s_pooled = np.sqrt((mse1 + mse2) / 2)\n",
    "    cohens_d = diff / s_pooled\n",
    "    return cohens_d\n",
    "\n",
    "def evaluate(name, results):\n",
    "    print(name)\n",
    "    columns = [\n",
    "        \"method\",\n",
    "        \"target\",\n",
    "        \"R2\",\n",
    "        \"MSE\",\n",
    "        \"RMSE\",\n",
    "        \"MAPE\",\n",
    "        \"mean error\",\n",
    "        \"mean bias\",\n",
    "        \"rel. error\",\n",
    "        \"n_samples\",\n",
    "        \"run\",\n",
    "    ]\n",
    "    results_df = []\n",
    "\n",
    "    for target in target_vars:\n",
    "        pred = target + \"_pred\"\n",
    "        for run, result in results.groupby(\"run\"):\n",
    "            mask = mm = result[target] != 0\n",
    "            #mm = result[pred] != 0\n",
    "            \n",
    "            results_df.append(\n",
    "                pd.DataFrame(\n",
    "                    [\n",
    "                        [\n",
    "                            name,\n",
    "                            target,\n",
    "                            r2_score(result[target], result[pred]),\n",
    "                            mean_squared_error(\n",
    "                                result[target], result[pred]\n",
    "                            ),\n",
    "                            mean_squared_error(\n",
    "                                result[target], result[pred], squared=False\n",
    "                            ),\n",
    "                            mean_absolute_percentage_error(\n",
    "                                result[target][mask], result[pred][mask]\n",
    "                            )\n",
    "                            * 100,\n",
    "                            abs(\n",
    "                                (result[target][mm] - result[pred][mm]).sum()\n",
    "                                / len(result[pred][mm])\n",
    "                            ),\n",
    "                            (result[target][mm] - result[pred][mm]).sum()\n",
    "                            / len(result[target][mm])\n",
    "                            ,\n",
    "                            abs(\n",
    "                                (result[target][mm] - result[pred][mm]).sum()\n",
    "                                / (result[target][mm]).sum()\n",
    "                            )\n",
    "                            * 100,\n",
    "                            result[\"n_samples\"].median(),\n",
    "                            run,\n",
    "                        ]\n",
    "                    ],\n",
    "                    columns=columns,\n",
    "                )\n",
    "            )\n",
    "    results_df = pd.concat(results_df, axis=0)\n",
    "    return results, results_df\n",
    "\n",
    "'''\n",
    "                            abs(\n",
    "                                (result[target][mm] - result[pred][mm]).sum()\n",
    "                                / len(result[pred][mm])\n",
    "                            ),\n",
    "                            (result[target][mm] - result[pred][mm]).sum()\n",
    "                            / len(result[pred][mm])\n",
    "                            ,\n",
    "                            abs(\n",
    "                                (result[target][mm] - result[pred][mm]).sum()\n",
    "                                / (result[pred][mm]).sum()\n",
    "                            )\n",
    "                            * 100,\n",
    "''';\n",
    "'''\n",
    "                            abs(\n",
    "                                (result[target] - result[pred]).sum()\n",
    "                                / len(result[pred])\n",
    "                            ),\n",
    "                            (result[target] - result[pred]).sum()\n",
    "                            / len(result[pred])\n",
    "                            ,\n",
    "                            abs(\n",
    "                                (result[target] - result[pred]).sum()\n",
    "                                / (result[pred]).sum()\n",
    "                            )\n",
    "                            * 100,\n",
    "''';"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "4635281c",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSENet14\n",
      "MSENet14\n",
      "MSENet14 < 1y 100%\n",
      "MSENet14 < 1y 100%\n",
      "MSENet14 < 1y 75%\n",
      "MSENet14 < 1y 75%\n",
      "MSENet14 < 1y 50%\n",
      "MSENet14 < 1y 50%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSENet14 < 1y 25%\n",
      "MSENet14 < 1y 25%\n",
      "MSENet14 < 1y 12.5%\n",
      "MSENet14 < 1y 12.5%\n",
      "MSENet14 < 1y 6.25%\n",
      "MSENet14 < 1y 6.25%\n",
      "MSENet14\n",
      "MSENet14\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSENet14 < 1y 100%\n",
      "MSENet14 < 1y 100%\n",
      "MSENet14 < 1y 75%\n",
      "MSENet14 < 1y 75%\n",
      "MSENet14 < 1y 50%\n",
      "MSENet14 < 1y 50%\n",
      "MSENet14 < 1y 25%\n",
      "MSENet14 < 1y 25%\n",
      "MSENet14 < 1y 12.5%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSENet14 < 1y 12.5%\n",
      "MSENet14 < 1y 6.25%\n",
      "MSENet14 < 1y 6.25%\n",
      "MSENet14\n",
      "MSENet14\n",
      "MSENet14 < 1y 100%\n",
      "MSENet14 < 1y 100%\n",
      "MSENet14 < 1y 75%\n",
      "MSENet14 < 1y 75%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSENet14 < 1y 50%\n",
      "MSENet14 < 1y 50%\n",
      "MSENet14 < 1y 25%\n",
      "MSENet14 < 1y 25%\n",
      "MSENet14 < 1y 12.5%\n",
      "MSENet14 < 1y 12.5%\n",
      "MSENet14 < 1y 6.25%\n",
      "MSENet14 < 1y 6.25%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n",
      "/tmp/ipykernel_45615/1417926861.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = False\n",
      "/tmp/ipykernel_45615/1417926861.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  file.loc[:, \"corrected\"] = True\n"
     ]
    }
   ],
   "source": [
    "result_dict = {}\n",
    "result_dict_corrected = {}\n",
    "result_scores = {}\n",
    "for split in splits:\n",
    "    result_score = []\n",
    "    for name in models.keys():\n",
    "        # use corrected version except for linear regressor (optimal already)\n",
    "        file, scores = evaluate(name, results[name].query(\"split == @split\"))\n",
    "        file.loc[:, \"corrected\"] = False\n",
    "        scores.loc[:, \"corrected\"] = False\n",
    "\n",
    "        result_dict[name] = file\n",
    "        result_score.append(scores)\n",
    "\n",
    "        file, scores = evaluate(name, results_corrected[name].query(\"split == @split\"))\n",
    "        file.loc[:, \"corrected\"] = True\n",
    "        scores.loc[:, \"corrected\"] = True\n",
    "\n",
    "        result_dict_corrected[name] = file\n",
    "        result_score.append(scores)\n",
    "\n",
    "    result_score = pd.concat(result_score, axis=0)\n",
    "    result_scores[split] = result_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2a606535-70d0-4251-9ba7-87a44e604999",
   "metadata": {},
   "outputs": [],
   "source": [
    "result_scores[\"test\"] = result_scores[\"test\"].query(\"corrected == True\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "f7494784-6232-490e-9e16-897f139b890b",
   "metadata": {},
   "outputs": [],
   "source": [
    "def abs_min(x): return x.iloc[np.argmin(abs(x))]\n",
    "def abs_max(x): return x.iloc[np.argmax(abs(x))]\n",
    "def abs_median(x): return np.median(abs(x))\n",
    "def avg_sign(x): return np.mean(np.sign(x))\n",
    "def abs_mean(x): return np.mean(abs(x))\n",
    "def arg_abs_min(x): return np.argmin(abs(x))\n",
    "def arg_abs_max(x): return np.argmax(abs(x))\n",
    "def arg_max(x): return np.argmax(abs(x))\n",
    "\n",
    "agg = {\n",
    "    \"R2\": [\"median\", \"max\"],\n",
    "    #'MSE' : ['median', 'min'],\n",
    "    'RMSE' : ['median', 'min'],\n",
    "    'MAPE' : ['median', 'min'],\n",
    "    #\"mean error\": [\"median\",  \"max\", \"min\"],\n",
    "    \"mean bias\": [abs_median,  abs_min],\n",
    "    #'rel. error' : ['median', \"min\"],\n",
    "}\n",
    "\n",
    "rr = (\n",
    "    result_scores[\"test\"].query(\"target == 'BMag_ha'\")\n",
    "    .groupby([\"target\", \"n_samples\"])\n",
    "    .agg(agg)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "abd3ae88-8c20-473a-b415-4e05c58b643c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"2\" halign=\"left\">R2</th>\n",
       "      <th colspan=\"2\" halign=\"left\">RMSE</th>\n",
       "      <th colspan=\"2\" halign=\"left\">MAPE</th>\n",
       "      <th colspan=\"2\" halign=\"left\">mean bias</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>median</th>\n",
       "      <th>max</th>\n",
       "      <th>median</th>\n",
       "      <th>min</th>\n",
       "      <th>median</th>\n",
       "      <th>min</th>\n",
       "      <th>abs_median</th>\n",
       "      <th>abs_min</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>target</th>\n",
       "      <th>n_samples</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"7\" valign=\"top\">BMag_ha</th>\n",
       "      <th>165.0</th>\n",
       "      <td>0.774840</td>\n",
       "      <td>0.777346</td>\n",
       "      <td>48.025924</td>\n",
       "      <td>47.757922</td>\n",
       "      <td>859.315691</td>\n",
       "      <td>337.023162</td>\n",
       "      <td>0.745173</td>\n",
       "      <td>0.130643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>330.0</th>\n",
       "      <td>0.790070</td>\n",
       "      <td>0.794887</td>\n",
       "      <td>46.373241</td>\n",
       "      <td>45.838127</td>\n",
       "      <td>956.707443</td>\n",
       "      <td>355.432665</td>\n",
       "      <td>0.611145</td>\n",
       "      <td>0.193949</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>659.0</th>\n",
       "      <td>0.788164</td>\n",
       "      <td>0.810500</td>\n",
       "      <td>46.583353</td>\n",
       "      <td>44.059004</td>\n",
       "      <td>828.811509</td>\n",
       "      <td>438.979617</td>\n",
       "      <td>0.341079</td>\n",
       "      <td>0.228971</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1318.0</th>\n",
       "      <td>0.807908</td>\n",
       "      <td>0.812934</td>\n",
       "      <td>44.359387</td>\n",
       "      <td>43.775150</td>\n",
       "      <td>583.615801</td>\n",
       "      <td>189.133063</td>\n",
       "      <td>0.242115</td>\n",
       "      <td>0.200385</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1977.0</th>\n",
       "      <td>0.812819</td>\n",
       "      <td>0.822614</td>\n",
       "      <td>43.788657</td>\n",
       "      <td>42.627488</td>\n",
       "      <td>812.118072</td>\n",
       "      <td>734.521855</td>\n",
       "      <td>0.448185</td>\n",
       "      <td>-0.025055</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2636.0</th>\n",
       "      <td>0.823594</td>\n",
       "      <td>0.830175</td>\n",
       "      <td>42.509563</td>\n",
       "      <td>41.709073</td>\n",
       "      <td>545.921768</td>\n",
       "      <td>398.376741</td>\n",
       "      <td>0.219223</td>\n",
       "      <td>0.028558</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4270.0</th>\n",
       "      <td>0.824725</td>\n",
       "      <td>0.829388</td>\n",
       "      <td>42.373149</td>\n",
       "      <td>41.805641</td>\n",
       "      <td>299.496832</td>\n",
       "      <td>192.777440</td>\n",
       "      <td>0.665678</td>\n",
       "      <td>-0.290542</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         R2                 RMSE                   MAPE  \\\n",
       "                     median       max     median        min      median   \n",
       "target  n_samples                                                         \n",
       "BMag_ha 165.0      0.774840  0.777346  48.025924  47.757922  859.315691   \n",
       "        330.0      0.790070  0.794887  46.373241  45.838127  956.707443   \n",
       "        659.0      0.788164  0.810500  46.583353  44.059004  828.811509   \n",
       "        1318.0     0.807908  0.812934  44.359387  43.775150  583.615801   \n",
       "        1977.0     0.812819  0.822614  43.788657  42.627488  812.118072   \n",
       "        2636.0     0.823594  0.830175  42.509563  41.709073  545.921768   \n",
       "        4270.0     0.824725  0.829388  42.373149  41.805641  299.496832   \n",
       "\n",
       "                               mean bias            \n",
       "                          min abs_median   abs_min  \n",
       "target  n_samples                                   \n",
       "BMag_ha 165.0      337.023162   0.745173  0.130643  \n",
       "        330.0      355.432665   0.611145  0.193949  \n",
       "        659.0      438.979617   0.341079  0.228971  \n",
       "        1318.0     189.133063   0.242115  0.200385  \n",
       "        1977.0     734.521855   0.448185 -0.025055  \n",
       "        2636.0     398.376741   0.219223  0.028558  \n",
       "        4270.0     192.777440   0.665678 -0.290542  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(rr)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7b282eb4-ea1d-40d6-abd7-f77021248f5f",
   "metadata": {},
   "source": [
    "# Plots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "113fd06e-010e-4e99-a939-5b15eed6bfdd",
   "metadata": {},
   "outputs": [],
   "source": [
    "result_scores[\"test\"].columns = result_scores[\"test\"].columns.map(lambda x: x.replace(' ', '_'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ac10dda3-5bd0-40e4-8760-839a957d760a",
   "metadata": {},
   "outputs": [],
   "source": [
    "targets = [\"BMag_ha\", \"V_ha\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "3ac99322-4d59-454a-8d54-d94f5cbc9020",
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'figures/BMag_ha_R2_size.svg'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[19], line 17\u001b[0m\n\u001b[1;32m     15\u001b[0m ax\u001b[38;5;241m.\u001b[39mset_xlim(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m4300\u001b[39m)\n\u001b[1;32m     16\u001b[0m plt\u001b[38;5;241m.\u001b[39msubplots_adjust(left\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.15\u001b[39m, right\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, top\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, bottom\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.15\u001b[39m, hspace\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.15\u001b[39m, wspace\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.1\u001b[39m)\n\u001b[0;32m---> 17\u001b[0m \u001b[43mplt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msavefig\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfigures/\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mtarget\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m_R2_size.svg\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/.conda/envs/pts/lib/python3.8/site-packages/matplotlib/pyplot.py:954\u001b[0m, in \u001b[0;36msavefig\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    951\u001b[0m \u001b[38;5;129m@_copy_docstring_and_deprecators\u001b[39m(Figure\u001b[38;5;241m.\u001b[39msavefig)\n\u001b[1;32m    952\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msavefig\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m    953\u001b[0m     fig \u001b[38;5;241m=\u001b[39m gcf()\n\u001b[0;32m--> 954\u001b[0m     res \u001b[38;5;241m=\u001b[39m \u001b[43mfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msavefig\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    955\u001b[0m     fig\u001b[38;5;241m.\u001b[39mcanvas\u001b[38;5;241m.\u001b[39mdraw_idle()  \u001b[38;5;66;03m# Need this if 'transparent=True', to reset colors.\u001b[39;00m\n\u001b[1;32m    956\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m res\n",
      "File \u001b[0;32m~/.conda/envs/pts/lib/python3.8/site-packages/matplotlib/figure.py:3274\u001b[0m, in \u001b[0;36mFigure.savefig\u001b[0;34m(self, fname, transparent, **kwargs)\u001b[0m\n\u001b[1;32m   3270\u001b[0m     \u001b[38;5;28;01mfor\u001b[39;00m ax \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes:\n\u001b[1;32m   3271\u001b[0m         stack\u001b[38;5;241m.\u001b[39menter_context(\n\u001b[1;32m   3272\u001b[0m             ax\u001b[38;5;241m.\u001b[39mpatch\u001b[38;5;241m.\u001b[39m_cm_set(facecolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnone\u001b[39m\u001b[38;5;124m'\u001b[39m, edgecolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnone\u001b[39m\u001b[38;5;124m'\u001b[39m))\n\u001b[0;32m-> 3274\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcanvas\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprint_figure\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/.conda/envs/pts/lib/python3.8/site-packages/matplotlib/backend_bases.py:2338\u001b[0m, in \u001b[0;36mFigureCanvasBase.print_figure\u001b[0;34m(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)\u001b[0m\n\u001b[1;32m   2334\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m   2335\u001b[0m     \u001b[38;5;66;03m# _get_renderer may change the figure dpi (as vector formats\u001b[39;00m\n\u001b[1;32m   2336\u001b[0m     \u001b[38;5;66;03m# force the figure dpi to 72), so we need to set it again here.\u001b[39;00m\n\u001b[1;32m   2337\u001b[0m     \u001b[38;5;28;01mwith\u001b[39;00m cbook\u001b[38;5;241m.\u001b[39m_setattr_cm(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure, dpi\u001b[38;5;241m=\u001b[39mdpi):\n\u001b[0;32m-> 2338\u001b[0m         result \u001b[38;5;241m=\u001b[39m \u001b[43mprint_method\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   2339\u001b[0m \u001b[43m            \u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2340\u001b[0m \u001b[43m            \u001b[49m\u001b[43mfacecolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfacecolor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2341\u001b[0m \u001b[43m            \u001b[49m\u001b[43medgecolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43medgecolor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2342\u001b[0m \u001b[43m            \u001b[49m\u001b[43morientation\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morientation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2343\u001b[0m \u001b[43m            \u001b[49m\u001b[43mbbox_inches_restore\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_bbox_inches_restore\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2344\u001b[0m \u001b[43m            \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   2345\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m   2346\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m bbox_inches \u001b[38;5;129;01mand\u001b[39;00m restore_bbox:\n",
      "File \u001b[0;32m~/.conda/envs/pts/lib/python3.8/site-packages/matplotlib/backend_bases.py:2204\u001b[0m, in \u001b[0;36mFigureCanvasBase._switch_canvas_and_return_print_method.<locals>.<lambda>\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m   2200\u001b[0m     optional_kws \u001b[38;5;241m=\u001b[39m {  \u001b[38;5;66;03m# Passed by print_figure for other renderers.\u001b[39;00m\n\u001b[1;32m   2201\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdpi\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfacecolor\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124medgecolor\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124morientation\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m   2202\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbbox_inches_restore\u001b[39m\u001b[38;5;124m\"\u001b[39m}\n\u001b[1;32m   2203\u001b[0m     skip \u001b[38;5;241m=\u001b[39m optional_kws \u001b[38;5;241m-\u001b[39m {\u001b[38;5;241m*\u001b[39minspect\u001b[38;5;241m.\u001b[39msignature(meth)\u001b[38;5;241m.\u001b[39mparameters}\n\u001b[0;32m-> 2204\u001b[0m     print_method \u001b[38;5;241m=\u001b[39m functools\u001b[38;5;241m.\u001b[39mwraps(meth)(\u001b[38;5;28;01mlambda\u001b[39;00m \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: \u001b[43mmeth\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   2205\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mskip\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m   2206\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:  \u001b[38;5;66;03m# Let third-parties do as they see fit.\u001b[39;00m\n\u001b[1;32m   2207\u001b[0m     print_method \u001b[38;5;241m=\u001b[39m meth\n",
      "File \u001b[0;32m~/.conda/envs/pts/lib/python3.8/site-packages/matplotlib/_api/deprecation.py:410\u001b[0m, in \u001b[0;36mdelete_parameter.<locals>.wrapper\u001b[0;34m(*inner_args, **inner_kwargs)\u001b[0m\n\u001b[1;32m    400\u001b[0m     deprecation_addendum \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m    401\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIf any parameter follows \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m, they should be passed as \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    402\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mkeyword, not positionally.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m    403\u001b[0m     warn_deprecated(\n\u001b[1;32m    404\u001b[0m         since,\n\u001b[1;32m    405\u001b[0m         name\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mrepr\u001b[39m(name),\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    408\u001b[0m                  \u001b[38;5;28;01melse\u001b[39;00m deprecation_addendum,\n\u001b[1;32m    409\u001b[0m         \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m--> 410\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43minner_args\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43minner_kwargs\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/.conda/envs/pts/lib/python3.8/site-packages/matplotlib/backends/backend_svg.py:1389\u001b[0m, in \u001b[0;36mFigureCanvasSVG.print_svg\u001b[0;34m(self, filename, bbox_inches_restore, metadata, *args)\u001b[0m\n\u001b[1;32m   1355\u001b[0m \u001b[38;5;129m@_api\u001b[39m\u001b[38;5;241m.\u001b[39mdelete_parameter(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m3.5\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124margs\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m   1356\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mprint_svg\u001b[39m(\u001b[38;5;28mself\u001b[39m, filename, \u001b[38;5;241m*\u001b[39margs, bbox_inches_restore\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m   1357\u001b[0m               metadata\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m   1358\u001b[0m     \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m   1359\u001b[0m \u001b[38;5;124;03m    Parameters\u001b[39;00m\n\u001b[1;32m   1360\u001b[0m \u001b[38;5;124;03m    ----------\u001b[39;00m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m   1387\u001b[0m \u001b[38;5;124;03m        __ DC_\u001b[39;00m\n\u001b[1;32m   1388\u001b[0m \u001b[38;5;124;03m    \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1389\u001b[0m     \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43mcbook\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen_file_cm\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mw\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mutf-8\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m fh:\n\u001b[1;32m   1390\u001b[0m         \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m cbook\u001b[38;5;241m.\u001b[39mfile_requires_unicode(fh):\n\u001b[1;32m   1391\u001b[0m             fh \u001b[38;5;241m=\u001b[39m codecs\u001b[38;5;241m.\u001b[39mgetwriter(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mutf-8\u001b[39m\u001b[38;5;124m'\u001b[39m)(fh)\n",
      "File \u001b[0;32m~/.conda/envs/pts/lib/python3.8/site-packages/matplotlib/cbook/__init__.py:506\u001b[0m, in \u001b[0;36mopen_file_cm\u001b[0;34m(path_or_file, mode, encoding)\u001b[0m\n\u001b[1;32m    504\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mopen_file_cm\u001b[39m(path_or_file, mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m\"\u001b[39m, encoding\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m    505\u001b[0m     \u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Pass through file objects and context-manage path-likes.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 506\u001b[0m     fh, opened \u001b[38;5;241m=\u001b[39m \u001b[43mto_filehandle\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpath_or_file\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    507\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m fh \u001b[38;5;28;01mif\u001b[39;00m opened \u001b[38;5;28;01melse\u001b[39;00m contextlib\u001b[38;5;241m.\u001b[39mnullcontext(fh)\n",
      "File \u001b[0;32m~/.conda/envs/pts/lib/python3.8/site-packages/matplotlib/cbook/__init__.py:492\u001b[0m, in \u001b[0;36mto_filehandle\u001b[0;34m(fname, flag, return_opened, encoding)\u001b[0m\n\u001b[1;32m    490\u001b[0m         fh \u001b[38;5;241m=\u001b[39m bz2\u001b[38;5;241m.\u001b[39mBZ2File(fname, flag)\n\u001b[1;32m    491\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 492\u001b[0m         fh \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mflag\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mencoding\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    493\u001b[0m     opened \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m    494\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(fname, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mseek\u001b[39m\u001b[38;5;124m'\u001b[39m):\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'figures/BMag_ha_R2_size.svg'"
     ]
    },
    {
     "data": {
      "image/png": "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FosFRVH49ddf+fe//83ll1/eanwYPnw4a9as4fPPP+fzzz9nxowZ9OjRg88//9yvBXBWfVAFqqqqamVlpXr//ferKSkp6hVXXKEuX7482Cb5WLRokdqjR496/2bPnq2qqqqmpKSomzZt8pXdsGGDOmLECLV///7qLbfcoubm5vquZWZmqmPHjq1X97Jly9QLL7xQ/e23386oD4WFhWqPHj3Ufv36qSkpKb5///znP1uNH9XV1ertt9+uDhw4UE1JSVGHDRumLl26VFUUpdX4cDzH2xEsH0TOaoFAEHRE00wgEAQdIUQCgSDoCCESCARBRwiRQCAIOkKIBAJB0BFCJBAIgo4QIoFAEHSEEAkEgqAjhOg8YsKECSxYsKDJ5RcvXsz48ePPoEUtk4yMDD755JMz+hqFhYUsXrw46HW0FHTBNkBwYsaPH8/ll1/epNXSJ2Px4sXo9foml580aRITJkw47dcVCE6GEKJzAJfL1aSEVFFRUQHV29rSoLQGSktLeeaZZ9i4cSPV1dWsWrWKkSNHcs8995zVOloaomnWgvnb3/7G5s2bWbJkCT179iQjIwM41mR65513GDRoEGPHjgW8Ca+GDx9OcnIy1157Le+99169+o5vmvXs2ZOsrCzuuOMOkpOTGTNmTL20D8c3zSZMmMD8+fN57LHHSE1NJSMjg6+++qrea6xcuZIhQ4aQkpLC7Nmzef75508YVe3YsYPx48eTkpLCRRddxF/+8heqqqoA+Oabbxg3bhypqakMGjSIJ554ApvN5mffu+++y6BBgxg4cCCvv/46LpeLxx57jLS0NK655hp+/PFH3z1ZWVlceeWVZGdnM3jwYFJTU5kzZw4ul6tRGwsKCpgyZYrPjnnz5mG3233Xly1bRkZGBv369ePKK688YXPp2WefZf/+/Tz22GOMHj2aWbNmYTQafdd//vlnevbsyU8//cSIESNITU1l2rRpVFZWNrmO1ogQohbM3//+dwYMGMCkSZP44Ycf+PTTT33XcnJy2Lp1K++88w4vv/wyAAaDgaeeeoovv/ySBx54gAULFrB27doTvsarr77KX/7yF7Kzs4mLi+PRRx89YfmPPvqICy64gOzsbEaPHs0jjzxCaWkp4E269de//pXx48eTlZVFfHw8H3300Qnre/jhh0lLS+OLL77gww8/5MYbb/RdczqdTJkyhRUrVrBgwQJ+/vlnvyRku3btIicnh3fffZdHH32UBQsWMHXqVJKSksjKymLQoEHMnj27ntBUVFSQmZnJ0qVLWbJkCd9//z1Lly5t0D6Xy8Wdd95Jt27dyMzM5LXXXmPbtm0899xzAGzdupXFixfz5JNPsnr1al555RW6du3aqL+7du1i1KhR9OnThzZt2jB48GDuuOMOv3KvvfYazz33HO+99x65ubn885//DLiO1oRomrVgwsPD0el0hIaGEhsb63f96aefrtd8mjhxou/3Ll26sGHDBlatWsXgwYMbfY1bb72Vq6++GoB77rmHW2+9FavV2mizLC0tzffQT506lX/9619s3bqVq666io8//pjk5GRfE2Hq1KknFcKioiKuuuoqunTpAlAvGd2IESPq+XPffffx8ssvM2vWLN95nU7Hk08+icFgICEhgTfeeAOdTueLwqZNm8aHH37I/v37falRnU4nTzzxBAkJCQDMmDGDF198scF+uJUrV2I2m3nkkUd85x555BFuv/12HnvsMYqKimjbti2XXXYZOp2Ojh07kpaW1qi/ycnJfPrppw2ml63Lww8/zIABAwAYO3Ys//nPfwKuozUhhKiVEh8f7ycWtd/sBw4cwG6343a7G0xiVZe62fbatm0LQFlZWaNCVLe8TqcjOjq6XkTUt2/feuX79evHrl27Gn39v/zlL0yaNIlBgwZxxRVXMHz4cGJiYgDYs2cPCxYsYMeOHVRWViLLMrIs17u/W7du9frH2rZtW28ThLo+1RIWFuYTIYD+/ftTUVFBeXm5304pu3btYteuXaSmpvrOqaqK2+2muLiYyy+/nAULFnDNNdeQnp5ORkYGgwcPbjQp/SOPPMKrr77KwoULOXr0KD/99BP3338/l112Wb1yx78vde1vah2tCdE0a6Ucv2VLQUEB9913H5deeilLly7ls88+46abbmpwD6q61B1Fq/3wKIrSaHmdrv53l0ajoTallaqqJ9wVoiEeeughPv30U1JSUvj8888ZPny4b1eVqVOnotFoePHFF8nMzGTOnDl+/jRkT91ztfbUTbsViI02m42BAweSnZ3t+/f555+zevVqYmNjCQ8PZ8WKFTzxxBMYDAYeffRRpk6d2mh9ZrOZ2bNns3z5cm6++WbS0tKYPHkyBQUFjfql0WjqvSdNraM1IYSohaPT6fyigIbYsWMHJpOJGTNm0L9/f+Lj4yksLDwLFh6je/fu7Nixo9657du3n/S+Hj16MHnyZD7++GPatm3LmjVrKCsrIz8/n3vvvZeBAwdywQUXcPTo0Wax02KxsG/fPt/xtm3biIqKanDfuF69erFv3z7at29Pt27d6v2rFXGDwcDgwYOZM2cOr7/+Ot99950vSjwRsbGx/PWvf8VoNPr93ZpKc9TREhBC1MLp1KkTv//+O8XFxfVGTo6na9euWCwWsrKyOHDggK9T9Wwybtw4fvvtN9544w3279/PG2+8UW8PrONxOBw8/fTT/PLLLxw8eJC1a9dy6NAhunfvTmRkJJGRkXz88ccUFBSwcuXKk3Z8NxWj0cgTTzxBTk4OP/30E4sXL+a2225rsOyNN96IXq/ngQceYOvWrRw4cIBvv/2W559/HoDvvvuODz74gF27dvnsjI6ObnSqxD/+8Q9+/fVX7HY7LpeLTz75BLvdftKtfZq7jpaG6CNq4UyaNInZs2czdOhQ4uLi+Pbbbxss16dPH2bOnMkLL7yA0+lk+PDh/OlPf2pSRNJcxMfHM3/+fF588UVee+01rr32Wm666Sby8/MbLC9JEqWlpTz44IOUlZXRrl077r33Xl/n+QsvvMAzzzxDZmYmKSkp3H///cyZM+e07YyKimLUqFHcfffdVFdXM2LECKZMmdJgWbPZzPvvv8/zzz/PpEmT8Hg8dO3a1bdDanh4OCtXrmTBggXIskzv3r1ZunRpo3t8tWvXjnnz5pGfn4/L5aJz584899xzdO/evcn2N0cdLQ2Rs1pwRrnjjjvo3r07jz/+eLBNAbzziF555RXWrVsXVDsKCwv57LPPTmvGfHPU0VIQEZGgWVm+fDkXXnghISEhfP3112zYsIHp06cH2yxBC0cIkaBZ2bVrF6+99hpWq5X4+HgWL158wnk15yudO3c+7UimOepoKYimmUAgCDpi1EwgEAQdIUQCgSDoCCESCARBRwiRQCAIOkKIBAJB0BFCJBAIgo4QIoFAEHSEEAkEgqDz/wHrrjZnqLh5bgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 249.344x150 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "b_r2 = {\n",
    "    \"BMag_ha\": 0.760720,\n",
    "    \"V_ha\": 0.763\n",
    "}\n",
    "\n",
    "for target in targets:\n",
    "    f, ax = plt.subplots(figsize=(7.48031/3, 1.5))\n",
    "    sns.lineplot(x=\"n_samples\", y=\"R2\", data=result_scores[\"test\"].query(\"target == @target\"), errorbar=\"se\", markers=[\"x\"], dashes=False, ax=ax)\n",
    "    ax.plot(np.arange(4300), [b_r2[target]] * 4300, linestyle=\"--\",c=\"orange\")\n",
    "    ax.scatter([4270], [b_r2[target]], c=\"orange\", label=\"\\power{} baseline\")\n",
    "    ax.set_xticks(range(0, 4300, 1000), labels=[f\"{n/1000}K\" if n > 0 else 0 for n in range(0, 4300, 1000)])\n",
    "    #ax.legend()\n",
    "    ax.set_ylabel(\"\\$R^2\\$\")\n",
    "    ax.set_xlabel(\"training samples \\$n\\$\")\n",
    "    ax.set_xlim(0, 4300)\n",
    "    plt.subplots_adjust(left=0.15, right=1, top=1, bottom=0.15, hspace=0.15, wspace=0.1)\n",
    "    plt.savefig(f\"figures/{target}_R2_size.svg\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0e5e5641-4927-4862-823b-798dd44c35c8",
   "metadata": {},
   "outputs": [],
   "source": [
    "b_rmse = {\n",
    "    \"BMag_ha\": 49.508961,\n",
    "    \"V_ha\": 92.82\n",
    "}\n",
    "\n",
    "for target in targets:\n",
    "    f, ax = plt.subplots(figsize=(7.48031/3, 1.5))\n",
    "    sns.lineplot(x=\"n_samples\", y=\"RMSE\", data=result_scores[\"test\"].query(\"target == @target\"), markers=True, errorbar=\"se\", ax=ax)\n",
    "    ax.plot(np.arange(4300), [b_rmse[target]] * 4300, linestyle=\"--\", c=\"orange\")\n",
    "    ax.scatter([4270], [b_rmse[target]], c=\"orange\", label=\"\\power{} baseline\")\n",
    "    ax.set_xlim(0, 4300)\n",
    "    ax.set_xticks(range(0, 4300, 1000), labels=[f\"{n/1000}K\" if n > 0 else 0 for n in range(0, 4300, 1000)])\n",
    "    plt.subplots_adjust(left=0.15, right=1, top=1, bottom=0.15, hspace=0.15, wspace=0.1)\n",
    "    ax.set_xlabel(\"training samples \\$n\\$\")\n",
    "    #ax.legend()\n",
    "    plt.savefig(f\"figures/{target}_RMSE_size.svg\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "df355b4a-ab63-457d-9362-722744fa6af2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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eOEF5s6dyz//+U+ioqIYPnx4iRaHM99evXoxZMiQCvOtLlUSmk2bNjFy5Ei6detGt27dGDlyZAkT6soSFBTE1KlTS7QxK2LDhg0ug+qVK1e6fb1bHkmC7XdB/lkQLWDLd/zNPws77nacrwGio6M5c+aM6yZ3smHDBl555RX27t1Ly5YtXQKRk5PDxIkTGTlyJPv27WPmzJlMnz6dpKQkGjduTEBAAEePHgVg//79NG7c2NVE2L9/P927dwcctp0nT55k3bp1/Pbbb6jVaubPn18iht9//50tW7awYcMG17FLly6RmJhIkyZNyi1T06ZN2b1793XNrrZv307v3r05cOAAEydOZOrUqa73wc/Pj2XLlnHo0CFee+01Fi1a5CrXqlWrCA4O5n//+x+7d+/m2WefRRAERFFkypQptGrVih07dvD111+zbds21q9ff93PAeC7775jwoQJHDx4kDvuuMNlDFY83+3bt/PZZ5+xffv2SufrLm4LzZIlS1iwYAG9e/fmzTff5M0336R3794sXLjwuk5o1zJ48GAGDhyIn5+fu2HIVIX03VBwHqRrbCwlG+T/5ThfA6jVamJiYly2C07uvfdebrvtNrRaLbNmzeLw4cOkpqby66+/0rRpU0aNGoVKpaJfv3706tWL7777DoDu3buzf/9+jEYjKSkpPPLII+zbtw+LxcKRI0eIiYmptG3ntGnTMBgM6HQ6ABYsWED//v2JiYlxmbiVxSuvvMLixYvp3LlzhTWbiIgI7rvvPlQqFSNGjKB58+au2l3fvn1p1aoVCoWC7t2706tXL5f9qEqlIj09nYsXL6JWq+nWrRsqlYrjx4+TmprK008/7dprffz48Xz77beV+iwGDBhA165dUSqV3HfffZw8eRKgVL6BgYFu5esubg9vf/nll7z22msltsWIjY2lQ4cOzJ49u1Z73ceNG4coinTs2JFnn322hFmRO4iiWKlqcH3FWb11mjNVmrwzIKhRiKWdECVB4zgf2KtGYuzXrx+//vorw4YNc8XapEkTV7xeXl54enqSmppKWloazZo1K1GWZs2akZaWhiRJdO/enW+++YaOHTsSGRlJTEwMCxYsoFevXgQHB7sMrcqz7bx69aor7+IxAMyePZtHHnmEkSNHcuTIEbp06VJmed59910mT57Mk08+iSAIJd774n+vzb9p06aucuzc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PH788UfuvfdeJk+efEPzqE/ITac65oUXXuDQoUO8//77hIeHExsbC/zdpFm1ahW9e/fmwQcfBByGRkOGDKFLly4MHjyYzz77rER+1zadwsPD2bhxI+PHj6dLly7cf//9JWwBrm06jR07lkWLFjFnzhyioqKIjY3lu+++K3GN77//nn79+hEZGcnzzz/PG2+8UWGt6MSJEzz88MNERkZy++23M2bMGHJzcwHYtm0bo0aNIioqit69ezN37lyMRmOp+D799FN69+5NdHQ0y5cvx2KxMGfOHLp27cqgQYPYvXu36zUbN27kzjvvZNOmTfTt25eoqChmz56NxWIpN8YLFy7w5JNPuuKYP38+hYWFrvOrV68mNjaWjh07cuedd1bYnPn3v//NuXPnmDNnDiNGjOC5555Dq9W6zu/bt4/w8HD27NnD0KFDiYqKYurUqeTk5FQ6j4aGLDR1zMsvv0znzp2ZMGECv//+O+vXr3edi4+P5+jRo6xatYq3334bAI1Gw4IFC/j22295+umnWbJkCb/99luF1/jggw8YM2YMmzZtIigoiJdeeqnC9F999RWhoaFs2rSJESNG8OKLL5KRkQE4TJVmzZrFww8/zMaNGwkJCeGrr76qML9nn32Wrl278v/+3//jiy++YPjw4a5zZrOZJ598ki1btrBkyRL27dtXymTq9OnTxMfH8+mnn/LSSy+xZMkSpkyZQrt27di4cSO9e/fm+eefLyEk2dnZbNiwgRUrVvD+++/z66+/smLFijLjs1gs/OMf/6BVq1Zs2LCBZcuWcezYMV5//XUAjh49ytKlS5k3bx4///wz77zzDi1btiy3vKdPn+a+++6jQ4cO+Pv707dvX8aPH18q3bJly3j99df57LPPSEhI4MMPP3Q7j4aC3HSqY7y8vFCpVOj1egIDA0udX7hwYYnmzeOPP+563qJFC/bu3cuPP/5I3759y73G6NGjGThwIACTJ09m9OjRFBQUlNts6tq1q+tLPWXKFD755BOOHj1K//79+frrr+nSpYurCj9lypTrCt3ly5fp378/LVq0AChhODZ06NAS5fnnP//J22+/zXPPPec6rlKpmDdvHhqNhjZt2vDRRx+hUqlctaipU6fyxRdfcO7cOZd1pdlsZu7cubRp0waAGTNm8NZbb5XZD/b9999jMBh48cUXXcdefPFFHnvsMebMmcPly5cJCAigR48eqFQqmjZtSteuXcstb5cuXVi/fn2Z9p/FefbZZ+ncuTMADz74ID/99JPbeTQUZKGpx4SEhJQSA+cvc1JSEoWFhVit1jJNiopT3C0tICAAgMzMzHKFpnh6lUqFn59fiRrNbbfdViJ9x44dOX36dLnXHzNmDBMmTKB379706tWLIUOG0KhRIwASExNZsmQJJ06cICcnB7vdjt1uL/H6Vq1aleifCggIKGE0X7xMTjw9PV0iA9CpUyeys7PJysoqtdvE6dOnOX36NFFRUa5jkiRhtVpJS0ujZ8+eLFmyhEGDBtGnTx9iY2Pp27dvuabfL774Ih988AHvvvsu6enp7Nmzh2nTptGjR48S6a79XIrHX9k8Ggpy06kec+2WFhcuXOCf//wnd9xxBytWrOCbb77h//7v/8rcg6c4xUehnDeHKIrlplepSv7+KBQKnLZFkiRV6KpfFjNnzmT9+vVERkayefNmhgwZ4tqZYsqUKSgUCt566y02bNjA7NmzS5WnrHiKH3PGU9xayZ0YjUYj0dHRbNq0yfXYvHkzP//8M4GBgXh5ebFlyxbmzp2LRqPhpZdeYsqUKeXmZzAYeP7551m7di0PPPAAXbt25YknnuDChQvllkuhUJT4TCqbR0NBFpp6gEqlKvUrXhYnTpxAp9MxY8YMOnXqREhICCkpKTcgwr9p3bo1J06cKHHs+PHj131dWFgYTzzxBF9//TUBAQFs3bqVzMxMkpOTeeqpp4iOjiY0NJT09PQaiTM/P5+//vrL9f+xY8fw9fUtc++siIgI/vrrLxo3bkyrVq1KPJwirdFo6Nu3L7Nnz2b58uXs2LHDVcuriMDAQGbNmoVWqy31vlWWmsijrpGFph7QrFkz/vzzT9LS0kqMPFxLy5Ytyc/PZ+PGjSQlJbk6LW8ko0aN4siRI3z00UecO3eOjz76qMQeQNdiMplYuHAhBw8e5OLFi/z2229cunSJ1q1b4+Pjg4+PD19//TUXLlzg+++/v27HcmXRarXMnTuX+Ph49uzZw9KlS3n00UfLTDt8+HDUajVPP/00R48eJSkpie3bt/PGG28AsGPHDj7//HNOnz7titPPz6/cqQSvvfYaf/zxB4WFhVgsFtatW0dhYeF1tz6p6TzqE3IfTT1gwoQJPP/88wwYMICgoCC2b99eZroOHTrwzDPP8Oabb2I2mxkyZAgPPfRQpWoUNUVISAiLFi3irbfeYtmyZQwePJj/+7//Izk5ucz0giCQkZHBv/71LzIzMwkODuapp55ydU6/+eabvPrqq2zYsIHIyEimTZvG7Nmzqx2nr68v9913H5MmTSIvL4+hQ4fy5JNPlpnWYDCwZs0a3njjDSZMmIDNZqNly5auHR69vLz4/vvvWbJkCXa7nfbt27NixYpy9zgKDg5m/vz5JCcnY7FYaN68Oa+//jqtW7eudPw1kUd9QvYMlqk248ePp3Xr1sTFxdV1KIBjHs0777zDzp076zSOlJQUvvnmm2rN+K6JPOoDco1Gxm3Wrl1Lt27d8PDw4IcffmDv3r1Mnz69rsOSqcfIQiPjNqdPn2bZsmUUFBQQEhLC0qVLK5xXcqvSvHnzatdEaiKP+oDcdJKRkal15FEnGRmZWkcWGhkZmVpHFhoZGZlaRxYaGRmZWkcWGhkZmVpHFhoZGZlaRxYaGRmZWkcWGhkZmVrn/wN8BlBafbUvtgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 249.344x150 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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b79l8eLFbN++vULQnJSUFI4ePcrHH3/Mc889x+LFi5kyZQpt27Zl9erV9O3bl2eeeaacMOTn57Nq1SqWL1/O0qVL2bhxI8uXL6/UPqvVygMPPEB0dDSrVq1i2bJlHDhwgJdeegmA/fv3s2TJEubNm8fPP//MG2+8QcuWLausb0pKCjfffDMdOnQgMDCQ/v37c//991c4btmyZbz00kt88sknHDt2jHfeecfjMpoKcleljvH29kapVKLT6QgODq6wf+HCheW6E+PHj3f/HRUVxbZt2/jxxx/p379/lde44447GDx4MACTJk3ijjvuoKSkpMpuSlJSkvsmnTJlCh988AH79+9n4MCBfPXVV3Tt2tXdZJ4yZcoVhSszM5OBAwcSFRUFUC540ogRI8rV55FHHuH111/n6aefdm9XKpXMmzcPtVpN69atee+991Aqle5WztSpU/n88885deqUO1SexWJh7ty5tG7dGoDHHnuM1157rVI/0vfff4/BYODZZ591b3v22We59957mT17NpmZmQQFBXH99dejVCqJiIggKSmpyvp27dqVr7/+utJwg5fy1FNP0aVLFwDGjBnDTz/95HEZTQVZOK4hMTExFR7usjdnWloaJpMJm81WadCVS7k0mlNQUBAAubm5VQrHpccrlUr8/f3LtTg6duxY7vhOnTqRkpJS5fXvueceJkyYQN++fenTpw/Dhw8nICAAgBMnTrB48WIOHTpEQUEBDocDh8NR7vzo6Ohy/p2goKByQacvrVMZer3eLRoAnTt3Jj8/n7y8vAqR5FNSUkhJSSExMdG9TZIkbDYb2dnZ9O7dm8WLFzNkyBD69etHcnIy/fv3rzII8LPPPsvbb7/Nm2++yfnz59m6dSvTpk3j+uuvL3fc5d/LpfbXtIymgtxVuYZcHoL+9OnTPPLII1x33XUsX76cb775hr///e+V5sC4lEtHWcpudqfTWeXxSmX594MgCJSFYZEkqdqo2ZUxffp0vv76axISEli7di3Dhw93R52fMmUKgiDw2muvsWrVKmbNmlWhPpXZc+m2MnsuDRXjiY1Go5Hu3buzZs0a98/atWv5+eefCQ4Oxtvbm2+//Za5c+eiVqt57rnnmDJlSpXlGQwGnnnmGT799FNuu+02kpKSeOihhzh9+nSV9RIEodx3UtMymgqycNQDSqWywlu2Mg4dOoRWq+Wxxx6jc+fOxMTEcObMmWtg4UViY2M5dOhQuW0HDx684nlxcXE89NBDfPXVVwQFBfHLL7+Qm5tLeno6Dz/8MN27d6dVq1acP3++TuwsLi7mzz//dP9/4MAB/Pz8Ks1b065dO/7880/CwsKIjo4u91Mmumq1mv79+zNr1izeffddNmzY4G6FVUdwcDBPPvkkGo2mwudWU+qijIZGFo56IDIykn379pGdnV3Os345LVu2pLi4mNWrV5OWluZ24l1Lxo4dy969e3nvvfc4deoU7733XrkcHJdjNptZuHAhu3btIiMjg02bNnH27FliY2Px9fXF19eXr776itOnT/P9999f0dFaUzQaDXPnzuXo0aNs3bqVJUuWcPfdd1d67KhRo1CpVDz++OPs37+ftLQ01q9fz8svvwzAhg0b+Oyzz0hJSXHb6e/vX+XQ94svvsgff/yByWTCarWycuVKTCbTFVMV1HUZjQnZx1EPTJgwgWeeeYZBgwYREhLC+vXrKz2uQ4cOPPHEE7z66qtYLBaGDx/O7bffXqM3fl0RExPDK6+8wmuvvcayZcsYOnQof//730lPT6/0eFEUycnJ4f/+7//Izc0lNDSUhx9+2O2sffXVV3nhhRdYtWoVCQkJTJs2jVmzZl21nX5+ftx88808+OCDFBUVMWLECCZPnlzpsQaDgRUrVvDyyy8zYcIE7HY7LVu2dGdA8/b25vvvv2fx4sU4HA7at2/P8uXLq8wxEhoayvz580lPT8dqtdKiRQteeuklYmNja2x/XZTRmJBjjspU4P777yc2NpY5c+Y0tCmAax7HG2+8wa+//tqgdpw5c4ZvvvnmqmYE10UZjQG5xSHDp59+Srdu3fDy8uKHH35g27ZtPProow1tlkwjRhYOGVJSUli2bBklJSXExMSwZMmSauc1/FVp0aLFVbcU6qKMxoDcVZGRkfEYeVRFRkbGY2ThkJGR8RhZOGRkZDxGFg4ZGRmPkYVDRkbGY2ThkJGR8RhZOGRkZDxGFg4ZGRmP+X8LsWtsDUqxTgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 249.344x150 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "b_mbias = {\n",
    "    \"BMag_ha\": 2.03,\n",
    "    \"V_ha\": 4.50\n",
    "}\n",
    "ticks = {\n",
    "    \"BMag_ha\": np.arange(0, 2.1, .5),\n",
    "    \"V_ha\": np.arange(0, 4.6, 1)\n",
    "}\n",
    "\n",
    "for target in targets:\n",
    "    f, ax = plt.subplots(figsize=(7.48031/3, 1.5))\n",
    "    sns.lineplot(x=\"n_samples\", y=\"mean_bias\", data=result_scores[\"test\"].query(\"target == @target\").eval(\"mean_bias = abs(mean_bias)\"), markers=True, errorbar=\"se\", ax=ax, label=\"MSENet14\")\n",
    "    ax.plot(np.arange(4300), [b_mbias[target]] * 4300, linestyle=\"--\", c=\"orange\")\n",
    "    ax.scatter([4270], [b_mbias[target]], c=\"orange\", label=\"\\power{} baseline\")\n",
    "    ax.set_xticks(range(0, 4300, 1000), labels=[f\"{n/1000}K\" if n > 0 else 0 for n in range(0, 4300, 1000)])\n",
    "    ax.set_yticks(ticks[target])\n",
    "    ax.set_ylabel(\"abs. mean bias\")\n",
    "    ax.set_xlabel(\"training samples \\$n\\$\")\n",
    "    ax.set_xlim(0, 4300)\n",
    "    ax.legend()\n",
    "    plt.subplots_adjust(left=0.15, right=1, top=1, bottom=0.15, hspace=0.15, wspace=0.1)\n",
    "    #plt.savefig(f\"figures/{target}_mbias_size.svg\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "e2d4332d-38ab-4b13-a60c-e31315f43e1e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f81450c0940>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAGxCAYAAACOSdkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAACaHUlEQVR4nOzdd5hkVZn48e+9t27lqq7q6tzTaaanJycmISAZJGfQXdeVRVTCCrrIqiyYUNcA666KsO5vVdRdVwkOIEpSgmQQhsnT0zPTEzrHyvHe+/ujp5sZmNChqutW9fk8Dw/TXVW3zu1Kb53zvu+RDMMwEARBEARBmIHkfA9AEARBEAQhX0QgJAiCIAjCjCUCIUEQBEEQZiwRCAmCIAiCMGOJQEgQBEEQhBlLBEKCIAiCIMxYIhASBEEQBGHGsuR7AGaWyWQIBoPYbDZkWcSMgiAIglAIdF0nmUxSUlKCxXL0UEcEQkcRDAZpb2/P9zAEQRAEQZiExsZGAoHAUa8jAqGjsNlsANTX1+NyufI8mtzRNI3W1lZaWlpQFCXfw8mJmXCOIM6zmMyEcwRxnsXETOcYj8dpb28f+xw/GhEIHcXocpjdbsfpdOZ5NLmjaRoATqcz70/eXJkJ5wjiPIvJTDhHEOdZTMx4juNJaxGJL4IgCIIgzFgiEBIEQRAEYcYSS2OCIAhCTui6jmEYR73O6HLK6P+L1Uw4z+k+R0mSslLRLQIhQRAEIauGhobo6+sb1weiYRhYLBba2tqQJGkaRpcfM+E883GOdrudhoaGKQVEIhASBEEQsmZoaIje3l5qa2ux2+3H/EA0DIN4PI7D4SjaAAFmxnlO9zkahkFHRwe9vb1UVVVN+jgiEBIEQRCypq+vj9raWtxu97iubxgGsiyjKErRBggwM84zH+dYWVlJe3s7lZWVk75PkSwtCIIgZIWu62iaht1uz/dQhBlCVVUMwzhmLtrRiEBIEARByIrRD6NinfEQzEsEQoIgCIIgCJMgAiFBEARBMLE333yT8847jxUrVrBz586x3//DP/wDq1at4pvf/OYxj/HDH/6Qz33uc7kc5vs8/PDDXHXVVWM/r1ixgt27d0/rGMZDBEKCIAjCjPGhD33okGCiEPziF79g7dq1vPXWW8yZM2fs9z/72c/43//9X37xi18wODiYxxGOz9tvv01TU1O+h/E+IhASBEEQZoxTTjmFZ599Nt/DOKp0On3Iz0NDQ7S0tBw296qlpQWA4eHh6RhaURKBkCAIgjBjnHbaaTz33HOH/O5jH/sYd999Nx/5yEdYsWIFH//4x+nq6hq7fMOGDVx11VWsXLmSCy+8kOeffx6A7u5uli9fTiqVAuCuu+5i8eLFxONxAO655x5uv/12AFKpFD/84Q85/fTTWbt2LbfccgvBYBCA/fv3M2/ePB588EFOP/10LrnkkkPGp2naURsGSpI0ruaV6XSaz3/+86xYsYLzzz+f119/feyydevWcf7557NixQrOOOMM/ud//mfsssHBQT796U+zevVq1qxZw0c+8pGxc+7r6+Ozn/0sJ5xwAqeeeir33Xcfuq4f9v7nzZs3Nhv3xS9+ka9+9av84z/+IytWrODCCy9k69atY9c9+LinnHIKP/zhD4943KkSgZAgCAVjKpUhQh7ds/bw/w2MfChKQ7vhx8cf/jqj2p45/OX/+5EJDWXVqlXs2LFjLAgZ9dBDD3HHHXfw6quv0tDQwK233gpAMBjk2muv5YorruC1117jlltu4aabbmLPnj1UVVVRVlbGhg0bAHj99depqqri7bffHvt5zZo1APzbv/0b27Zt44EHHuD5559HVVW+/vWvHzKGF198kUcffZSHHnpo7HednZ20tbVRXV19xHOqqanhpZdeOubr489//jMnnXQSb7zxBtdeey033HDD2N/B7/fz4x//mLfeeot//dd/5bvf/e7Yef3sZz+jsrKSl19+mZdeeolbb70VWZbRdZ3rr7+ehoYGnn32WX7zm9/w/PPP8+CDDx7zcQB4/PHHueaaa3jzzTc5/vjj+cY3vgHwvuP+9re/5U9/+tO4jztRIhASBKEgaLrBhv1BBqOpfA9FKGCqqrJ27Vr+8pe/HPL7iy66iEWLFmGz2fj85z/Pm2++SXd3N8899xw1NTVcddVVWCwWTj31VE488UQef/xxANasWcPrr79OLBZj//79/O3f/i2vvfYaqVSK9evXs3btWgzD4Le//S233HILgUAAu93OzTffzJNPPkkmkxkbw2c+8xncbvdYH6Y777yT0047jbVr13LyyScf8ZzuuOMO7r77bpYuXXrUmaH58+dzySWXYLFYuPTSS5k1a9bY7Ngpp5xCQ0MDkiSxZs0aTjzxRN58800ALBYLfX19dHR0oKoqK1euxGKxsGnTJrq7u/nsZz+LzWajsrKSj370o2N/m2M544wzOO6441AUhUsuuYQtW7YAHPa4V199Nb///e/HddyJEp2lBUEoCIPRFN2hBMF4mqW13nwPR5iIG1878mWGgeFvghtehaP1H2o+c+S/LBhdHrvgggvGfnfwjIvX68XtdtPT00NPTw+1tbWH3L62tpaenh5gJBD63e9+x5IlS1i+fDnHH388X//61znppJOorKyksrKSgYEBYrEYV1999SF5PpIkMTAwMPZzTU3NIfdzxx138NGPfpTLL7+cd955h2XLlh32fP7jP/6DT3/601x//fUoinLE837vrFJNTc3YeTz//PPcc889tLe3o+s6iURiLDH7E5/4BD/60Y+49tpr0XWdyy+/nBtuuIH9+/czODjI6tWrx46p6/pRZ68OVlZWNvZvu91OLBYDmPJxJ0oEQoIgmJ5hGLQPRPHaR7rIbuoMImtimUyYnFNOOYXvfve7aJo2FjgcnBMUDoeJRCJjgUxnZ+cht+/o6GDx4sUAHH/88XzlK1/hpZdeYs2aNcyfP599+/bx/PPPjy2L+f1+7HY7//d//0dzc/P7kp73798PcNg8oNmzZ9PS0sKOHTuOGAi1tbXx7W9/+6hB0HvPcfTnD33oQ6RSKW666Sa+9a1vcfbZZ6OqKjfeeOPYUpvb7eaLX/wiX/ziF2lra+PjH/84ixYtoqamhqqqKv785z8DI6/TWCyG0+k86jiO5b3HzTWxNCYIgukNx9KE4mncNgseu0o6o9M+lCat5SZ5UihupaWl1NXVjeXyADz22GNs3bqVZDLJXXfdxXHHHUdVVRWnnHIKHR0d/O53vyOTyfD888/z0ksvce655wJQVVVFeXk5DzzwAGvXrkWWZZYuXcqvf/3rsUBIlmU+/OEPc/fdd9Pb2wvAwMAAzzzzzLjGa7Va31dJdrB0Oo2qqsc8zrZt23jsscfIZDKsW7eOvXv3csopp5BKpUilUpSWlmKxWHjxxRd56aWXxm737LPPsmfPHgzDwO12I8sysiyzZMkS/H4/99xzD7FYDF3X2bt37yFJ2JNxuOO2t7dP+bhHIgIhQRBMb+9gDJvl3W+7fpeVSFqntSeMrouZIWHiTj311EOqxy699FK+9rWvcfzxx7N7927uuusuAHw+H//5n//J//zP/7B27Vruuusuvv/97x/SD2ft2rUoisK8efPGfo5EIqxd+26y9y233EJzczMf/ehHWbFiBR/5yEfYuHHjuMYqSdIRK6ZGf3+s2SCA008/neeff57Vq1fzk5/8hB/96Ef4fD7cbje33347t9xyC6tXr+aRRx7htNNOG7vdnj17+Id/+AeOO+44rrzySq644gpOPvlkFEXhvvvuo729nbPPPps1a9bwhS98gb6+vnGd15G897irV6/ms5/97JSPeySSIcowjigWi7F161ZaWlrweDz5Hk7OaJrG+vXrWb58+bheTIVoJpwjFOd5hhJp3tw9SJnbNrakoOka27dvx1/dyOwKN3PK3UW3v1UhPpaaptHa2kpLS8u4x3zwcsp0PoZbt27l1ltv5fe//z0f+9jHOO+88/ibv/mbnN3fVM7zlltuwWq18o1vfON9f9d33nmHj3zkI7z++ut5/5zKx2N5pOfc6Of3ggULjrlUJ2aEBEEwtf2DMSyy/L43VkmSCLit7BmIsn8onqfRCYVqwYIFXHDBBWP9cMzsmmuuoa2tjRNOOOGQrtif+MQnuPHGG7nxxhvzHgQVMpEsLQiCacVSGbpDCUqdtsNersgSfqeN1p4wNotMhdc+zSMUCtl1112X7yGMy6JFi3jggQfe9/v//u//zsNoio8IhARBMK3O4TiyJKHIR55mVxUZr11lc2cIm0WhxHnspFFBONgvf/nLfA9ByCOxNCYIgikl0hr7h+J47ccObOyqgkNV2NgxTCyVOeb1BUEQRolASBAEU+oNJdENA1UZ39uUy2YBJDbtD5HMHHvfJSH7RvO4RA2OMF1Gn2tTSc4WS2OCIJhOWtPZOxgd12zQwUocKgPRJNu6wyyq9mIZZxAlZIcsy9jtdjo6OqisrBxXbxvDMNB1HU3Tiq7y72Az4Tyn+xwNw2BgYABVVY+6Ke2xiEBIEATT6Q8nSWk6JQ7rhG8bcNnoDSXYoYSZV+lFPkp+kZB9DQ0N9Pb20t7ePq6ZIcMwxhoCFmuAADPjPPNxjqqqUl9fP6VjiEBIEART0XSDPQMxXNbJvz2VeWx0DCewWxSayt1ZHJ1wLLIsU1VVRWVlJYZhHDMY0jSNjRs3smDBgoLplzQZM+E8p/scJUma0kzQKBEICYJgKoPRFNFUhgrP5EvhZUmizGVjZ38Uu6pQ7XNkcYTCeEiSNKFZAUVRijZAONhMOM9CO0exgC4IgmkYhsGewShOderf0RRZwu+wsrUrxGDU/E3zBEHIDxEICYJgGsF4mmAsjcuWnW+TVouM26aycX+QcOLIm1YKgjBziUBIEATTGN1cNZuJlg6rgqpIbOoIkUiLsnpBEA4lAiFBEEwhnEjTH07hsWc/ddFjV0lrOps7g6S1w+/iLQjCzCQCIUEQTKFjOI4iS8g5Krv1O62E4mlau8Noumj4JwjCCBEICYKQd/GURtdwghJHbvcJC7hsdIcS7O6PiO7HgiAAIhASBMEEuoJxgKNurpoNkiQRcNnYMxBl/1A8p/clCEJhEIGQIAh5lcxo7BuK5Xw2aJQiS/idNlp7wvSGEtNyn4IgmJcIhARByKveUBJNY9ybq2aDqsh47Sqbu0IEY6KsXhBmMhEICYKQNxlNZ89gFK9j+pvc21UFh0VhY8cw0WRm2u9fEARzEIGQIAh50x9Jkkzr2Cz5acfvslkAic0dIZIZ0WNIEGYiEQgJgpAX+oHNVd22/G55WOJQiaUzbOsKkRE9hgRhxhGBkCAIeTEYSxFJZnBOYZf5bAm4bPRHUuzoDaOLHkOCMKOIQEgQhGlnGAZ7BrKzuWq2lLlt7B9K0D4QzfdQBEGYRiIQEgRh2mV7c9VskCWJcreNXf1RuoZFjyFBmClEICQIwrTbPxTHmuXNVbNBkSX8DivbusMMRlP5Ho4gCNNABEKCIEyrcCJNXziZk81Vs8FqkXFZLWzcHyScED2GBKHYiUBIEIRp1TWcQJbI2eaq2eCwKqiKxKaOEIm0KKsXhGImAiFBEKZNPKXRMRynxGHN91COyWNXyWg6mzqCpDKirF4QipUIhARBmDbdwTgGRs43V80Wn9NKOJGmtSeMJsrqBaEoiUBIEIRpkcro7BuK4SuA2aCDBVw2ekIJdvVFMAwRDAlCsRGBkCAI06I3lCCtGdO6uWo2SJJEwGVjz0CUfYOirF4Qik1hvSMJglCQxjZXtav5HsqkKLJEqctGa2+Y3lAi38MRBCGL8hoI/epXv+Kyyy5j8eLFfO5znzvkstbWVq666iqWLVvGBRdcwJtvvnnI5U888QRnnHEGy5cv55prrqGnp+eQy7///e+zdu1aVq1axVe+8hXSaVEG+166bpDRdFIZnZRmEEtliCQzhBJphmMpBqMp+iNJekMJuoMJOoZi7B2IsbMvQmtPiC2dITbsH+btvUO8uXuQV3cO8Eb7IPGUqLIRDjUQSZJI69hV8zRQnChVkSmxq2zuDBKMifcTQSgWeW3kUVFRwQ033MDLL7/M0NDQ2O/T6TTXX389H/7wh/nVr37FH//4R2644QaefvppSkpK2LlzJ1/60pe45557OO644/jOd77DLbfcwq9+9SsAHnjgAf7whz/w0EMP4XQ6+fSnP829997LTTfdlK9TzbpEWiOZ0TEMA0030I2RbQt0AzK6jqYbpDWDjK6j6wbpA0GPrkNGN9B0Hc0wMAzIZDR29SSJuQeRJBkkkBhJZjUwwJBAMpAO/FaWJWTp4H+PXF+RJaLJDLv7IyysKcnr30cwj5HNVeN531w1G+yqgqYbbOgY5rh6/4Hd6wVBKGR5fRWfffbZAGzduvWQQOj1118nkUhw7bXXIssyF198Mffffz9PPfUUV155JY8++ignn3wyJ5xwAgA333wzJ554Inv37qW+vp6HHnqIq6++mlmzZgFw/fXX87WvfW3SgZCu62iaeWY5DMPg7T1DRJMZGCu+keBAIqckjeQ1jPZqee/PsgQWi4QsyUgSYMgMOhT8ThVZntokodeusH8oRrnbSqnLPEmxo4+fmR7HXDDjeQ5EUwzHklR4bWh6dsal6/oh/59OdlUiGdfZuH+IpbN82Cy5mVg342OZC+I8i4eZznEiYzDl15kdO3bQ0tJyyIfy/Pnz2bFjBzCybLZ06dKxy3w+H9XV1bS2tlJfX8+OHTuYP3/+2OULFiygu7ubcDiMx+OZ8Hja2tqmcDbZF8/obOlN4XNkd5khW+cZT+v07IN5AavpyqQ3btyY7yFMC7Ocp2EY7BhMk9QMhtXsBwz5fG0GExq7d8nM8ak5fZ6b5bHMNXGexaPQztGUgVA0Gn1fwOL1egmHwwDEYrHDXh6NRg97+ei/D3fc8Whubsbtdk/4drnSE0qQ8IQoc9uycjxd12lra6O5uXnKM0Kj+sJJKivczCp1ZuV4U6VpGhs3bmTJkiUoSuHmqRyL2c4zGE8zuGeIcrc1q/uK5eI5Oxn94STOEgfzKt3IWQ6GzPZY5oo4z+JhpnOMxWK0traO67qmDIRcLheRSOSQ34XDYVwuFwBOp3NCl4/+e/TyiZJlOe8P6sGG4xnsqooiZ3dMsixn7ZgBt532wQQVJU4cVvP87RRFMdVjmStmOc/uUASHasGi5OatJpvP2cko9zroCiVx2izMLs/NlyWzPJa5Js6zeJjhHCdy/6Ysn587dy6tra2HrP9v3bqVuXPnAtDS0sK2bdvGLgsGg3R1ddHS0jJ2+4Mv37p1K1VVVZOaDTIbXTcYjKZwmii4OJyRXjEGu/sjx7yuUJwiyQzdwQReR2GWzI+HLEmUu23s6o/SOSR6DAlCIcprIJTJZEgmk2QyGXRdJ5lMkk6nWbNmDVarlZ/+9KekUikee+wx9u/fz1lnnQXARRddxAsvvMArr7xCIpHgBz/4AcuXL6e+vh6Ayy67jPvvv5+Ojg4GBwe59957ufzyy/N5qlkTTWVIZfSCaErnc1rpHI4zGE3leyhCHnQNx1EOVBgWM0WW8DusbOsOMxBJ5ns4giBMUF6Xxu69915+9KMfjf38xBNPcOmll/Ltb3+be++9l9tvv50f/OAH1NXVcc899+Dz+QCYM2cO3/zmN7n99tvp7+9n5cqV3H333WPHufLKK+no6OCyyy4jk8lw/vnnc/3110/36eVEJHFwpZi5yZKEy6bS1hNhZaPfdInTQu4k0hr7h+L4ing26GBWi4zbZmFTR4gVDb6CbRwpCDNRXgOhz3zmM3zmM5857GXz5s3jgQceOOJtzz33XM4999zDXiZJEp/73Ofe16SxGAxEk9gt5l4WO5jbZqE3nKBzOE6dSRKnhdzrCSUwMLAUwMxltjisChldZ9P+ICvq/abKjRME4chmzrtUEdAO5Ac5Cqw7r99pZVdfVHScniFSGZ09A9GC21w1Gzx2FU032NwZJJWZ/h5HgiBMnAiECkg0lSGjU3DfslVFxhCJ0zNGfyQ3m6tmNJ1E2vzBtM9pJRRPs707jKaL3eoFwewK6xN1hgvH00BhvrH6nVa6ggmGROJ0UdN0g/b+WE5yZO56upVP//KvBfEcKnPb6Akl2NkbwTAK8zUrCDOFCIQKSH8khcNiytZPxyRLEk7Vwo6eiPiWXMQGokniaS3rm6vuG4rxUls/g7EU//6nVnSTBxeSJFHmtrF3MMq+QVFWLwhmJgKhApHRdIZiqYJOwHTbLYSTabqGxQdDMRrZXDWGy5r9YP2R9Z0ALKj28tbeYX6/oTvr95FtiixR6rLR2humN5TI93AEQTgCEQgViGhSQzOMgi9B9zms7BSJ00VpOJ4mFE9nfUf2YDzNs9t6mVfp4WsXLqKmxM4vXtlDZziT1fvJBVWRKbGrbO4MMhwz/5KeIMxEIhAqEKFEGrlQGggdhdUykjjdPiASp4vNvsFYTlo7/GFjFylN5+LlNTisCrecPQ8D+PWmCMmM+QNqu6rgUC1s7AgSTZo/eBOEmUYEQgWiP5IsuLL5I/E7rXQOi8TpYhKMp+mPJPHYszsblMro/GFjFxUeGyfMKQOgpdLD366poyeq8fOX92T1/nLFZbMgIbGpI1gQlW+CMJOIQKgApDI6wVg66wmo+TKWON0rEqeLRcdQDFWRs7rDPMCz23sZjqe5aFnNIcvClyyvYbbfwh839fD67oGs3meulDhU4mmNbV0hMproMSQIZiECoQIQTWbQoeDzgw7mtlsIJ0TidDGIjm6umuWSed0weGR9By6rwlkLKw+5TJElPrLIjdum8B9/2lEw+9kFXDYGoilae8Lo4kuAIJiCCIQKQCiRpohioDE+h5Vd/VGxVFDguoJxZFnKeqD+1p4h9g3F+dCiKpyHqUTz2RVuOHUOoUSGf3/G/CX1o8rcNjqHE7QPRPM9FEEQEIFQQegrovygg1ktMrohOk4XstHNVUty0EBx3foOFFnigqU1R7zOCXMCnLWwkrf3DfPoO51ZH0MuyAd6DO3si9IxFMv3cARhxhOBkMklMxrheKZo8oPeazRxWpQWF6beUBLDyP7mqrv6IryzP8hJzWWUe2xHve4nT5pNTYmd+19uZ1dfYQTViiwRcFnZ3h1hIJLM93AEYUYTgZDJRZMahmEgZzkJ1SxE4nThSms67QMRvPbsb666bn0HAJcsrz3mdR1Whc8fKKm/66ntBbPUqioybttIWX0okc73cARhxhKBkMkFYykUubgfJrfdQjCeojsoEqcLSX84SVozsFqy+/wciCR5YUc/S2pLaK5wj+s2cys9/N3aBvYNxfnpS7uzOp5cclgVbIrCxv3DosmoIORJcX/CFoH+SKoo84Pey+8YyZkolG/zM52mG7QPxPDYsp8b9NiGLjTdGNds0MEuO66WpbUl/HFTN68VSEk9jHwR0HXY3BkklRFl9YIw3UQgZGKJtEYkmcGuFv/DJBKnC8tgNEUslcn63nfxlMYTm7uo9TlY1eif0G1lSeJzZ7Xgtln4QQGV1AP4nFZCiTTbu8NiiVgQplnxf8IWsMiBdvzZblJnVj6HSJwuBIZh0D4QPWxJ+1Q9s7WHaFLj4uU1k8qLK3Pb+MzpzYQSGb5fQCX1AGUuGz2hBDt7IxgFNG5BKHQiEDKx4VgKZYYEQTBSSeNQFdpE4rSpDcdGNld1Z3lzVU03ePSdTrx2C6fPr5j0cU6YU8bZCytZv2+YR9cXRkk9jHzhKXPb2DsYZd+gyJcThOkiAiGTMgyD/nAq60sPZuexqwTjaZE4bWJ7h2LYcrC56qu7BugOJThvSfWUj//JD86m1ufg/lcKp6QeRsvqbbT2hukJJfI9HEGYEUQgZFKJtE4slcGW5YqcQlDiUNklEqdNKZRIMxBO4s3y5qowUjKvKhLnL6me8rHs6khJPcD3CqikHsCiyPgcKlu7woRTInlaEHJt5n3KFohIMgPSzMkPOpjNoqAdyEMRzGX/YAyLnP3NVbd1hdjWHea0eRX4nNnpS9Rc4ebvjm9gf4GV1MPIa8Bhldk1mBrLFRQEITdEIGRSQ7EkapH3Dzoan8NK51BcJE6bSCyVoTuUwOvIzXYaABdPsGT+WC5dUcvSWSMl9a/uKpySegCn1YIkSWzuCBbUjJYgFJqZ+0lrYjM1P+hgiixhF4nTptI5HEeWsr+5ancowSu7BljZ4Ke+1JnVY8uSxD+d2YLHZuEHf95RcNtZuKwyibTGtq4QGU0skwlCLohAyIRiKY1kRs9JQmoh8dhVhmNpekIicTrfRjdX9eZgc9VH13egG3BplmeDRgUOlNSHExn+/U87CqqkHqDUbWMwmqa1J4wuvhQIQtaJQMiEoskMBuIND8DnVNnZKxKn860vlEQ3DNQsb64aSWR4emsPTWUuls4qyeqxD/aBOWV86EBJ/SMHluEKScA90mNrd7/oMSQI2SYCIRMaiKawKjN7NmiUzaKQ0Q32DMTyPZQZK63p7BmM5mQ26InN3STSOpcsr815YcC1B0rqf/HKHnYWUEk9jCzxlblt7OqP0TksZkgFIZtEIGQyum4wEEnOiP3FxsvvtNIxFCMYEzt058NAJElKy/5SbVrTeWxDJ6UuKx+cW5bVYx/OwSX1hbRL/aiRHkNWtndH6C+wXCdBMDMRCJlMLK2RyuhZ39G7kCmyhM2isKNX5EhMN103aO+P4crBdhovtvUzGE1xwdLqrC+5HUlzhZuPHSip/+8XC6ukHkBVZDx2C5s6goQS4ouBIGSD+LQ1mWgyMyN7Bx2L1zGaOC267U6nwViKaCqT9X3FDMNg3dsd2FWZcxdNvYHiRFyyopZls0p4YnM3rxRYST2MzGzZFIWN+4eJpwprVksQzEgEQiYzEElinaZvx4XG51Rp640U3JJGoRrbXFXN/mzQho4gu/qjnLmgEncOulQfjSxJfO5ASf0PC7CkHsBtt6AbsLkzSCojyuoFYSrEJ66JaLrBQGRm9w86mtHE6b0icXpaBONpgrE0Llv2n4/r3u5AAi5elpuS+WMJuG185oy5hAtwl/pRPoeVUCLN9u6w6LUlCFMgAiETiaYypDV92vIlCpHfaWWfSJyeFnsHRzZXzfZS7b7BGG/uGeL42QGqSuxZPfZEfGB2gA8tquKd/UHWvV14JfUAZS4bveEEbb2irF4QJkt84ppIRCQ/HpMiS9gtCm19InE6l8KJNP3hFJ4cLFuN9vG5dEV+ZoMOdu1JTdT6HPzy1T209RZWST2M7EVY5raxbzDG3kExUyoIkyECIRPpj6Swi7L5YxKJ07nXMRxHkSXkLM8GDcdS/Hl7L/MqPSyo9mb12JNhVxVu/VDhltTDSM5TwGWlrTdCT1D0GBKEiRKBkElkNJ2haEr0Dxonr12lrU8kTudCPKXRNZygJAebq/5hYxdpzTDFbNCoOeUjJfUdw3H+XwGW1ANYFJkSh8qWrpDYqFgQJkgEQiYRTWlkdAOLyA8aF7uqkNZ0kTidA10HZhWyvblqMqPx+MYuKr02jp8dyOqxp+qSFbUsr/Px5OZuXtnZn+/hTIrNouC0Wti4P0gkmcn3cAShYIhPXZMIx9NZX4YodqVOG/uH4gTjIrcqW5IZjX1DsZzMBj27rY9QIsNFy2qzHmRNlSxJfPaMuXjsFn7457aCLKkHcFotSJLEpo6gmC0VhHESgZBJ9EdFftBEjXSclmkTHaezpjeURNPIeuWibhg88k4HLqvCmQsqsnrsbAm4bdx0+lzCycItqQcocagk0xpbu0KkNdFjSBCORQRCJpDWdIZjIj9oMrwOlaFYmt6wSJyeqsyBzVVzUSn21z1D7B+Kc87iqqx3qc6m42cHOKfAS+oBSl02BqMpdvSILwmCcCwiEDKBaDKDphumWy4oFCV2lR29EZIZsRQwFf2RJMm0npOZyXVvd6DIEhcsrcn6sbPtEyc1MctfuCX1o8rdNjqHE7QPRPM9FEEwNREImUA4nhFB0BSIxOmp03WDPQMx3Lbsz9bs7IuwoSPIB+eWUea2Zf342Vbou9SPGu0xtKs/SrcoqxeEIxKBkAn0RhLYLWJZbCpKnTb2DYrE6ckajKWIJLO/uSowtsR0yXLzlMwfy5xyN3//gQMl9X/Zle/hTJoiS/gcKls6RVm9IByJCITyLJXRCScyIlF6ihRZwmqR2dkXETkRE2QYBntytLlqfyTJX9r6WVpbwpxyd9aPn0sXLz9QUr+lh5cLtKQe3i2r39QRJJYSZfWC8F4iEMqzaDKDYYj8oGwocagMRlMicXqCgvE0wznaXPX3GzrRdINLTNRAcbzeW1LfX6Al9QAumwXDgC2dIbFbvSC8hwiE8iyUSCMhgqBsKbGrtInE6QnZPxTHqshZ31w1lsrwxKZuZvkdrGzwZ/XY0yXgtnHzGXOJJDN8/+nWgt7l3ecc2a2+VVSSCcIhRCCUZ73hJA6rWBbLFruqkNJ09okNKMclkszQF07izUEDxWe29hBNaVyyvLagm4WubQpw7uIqNnQE+V0Bl9TDyG713aE4u/rFbvWCMEoEQnmUSGtERH5Q1o0mTocSInH6WDqH4sgSWQ9UNN3gkfWdlDhUTp1XntVj58M1JzZR53fwq9f2sKMnnO/hTJokSZS57Ozuj9EdFEvIggAiEMqraDKDgVEw35YNw0DTDdKaTiKtEU1mCMbTDEVT9EeS9IQSpuhkq8gSqiLT1isSp48mntLoGI5T4rBm/div7hqgN5zkvMVV2IqgInK0pF5ipKQ+nircpVdFlih1WtnaFWIoKirJBMG8LV5ngOF4GkWaeCy6qy/CSzsH0HQdTTfI6CMBiq4baAeClbH/xn5m7PqaMdI3ZuS2I7+LJ5Mor7+FbnDo7Q8cQz9wP8dSXWLn+1ctx5WDfjQTUeJQ6Q0n6A0nqCpx5HUsZtUdjGOQm0T9373dgapInLekOuvHzpfZ5W4+/oFG/vul3fzXi7u46fS5+R7SpFktMi7bSCXZcQ3+vL9eBSGfxLM/j/rDyUltq/Hj53ayfZzT87IEFllGkSVkGRRJQpElFFlGOfCzLEtYZAmnzYJFlsZ+pxz4vTx2m4P+k97/7+F4mudb+/jVq3v49ClzJnxe2eY9kDjtd1mxFMak27RJZXT2DcXw5WA2aGtXiO09YT60sBKfM/vHz6eLltfw1t4hnt7Sw8p6Pyc2l+V7SJPmtFpIa2k2d4RYVl9SFDN3gjAZIhDKk0RaI5rKUOaaWKfdoViK1p4wa5tKufak2e8LTmT5oMBHYlyVQJqu0draSktLC4o8+TdD3TDoCyd5fGMXp82voKXSM+ljZYNdVYgk0+wbjNEUcOZ1LGbTG0qQ1oysb64KjCUUX1yAJfPHIksSnz2zhc/8+i1+9GwbLZUeyj3m75Z9JCUOlf5Iku3dYRbVlIg2HsKMJHKE8iSSzADShEuW32wfxABOai6jqsROucdGqctKiUPFbbfgtFqwWkYCoWyXQx+LLEnccOocZFninufaTFFq7D+QOB0WidNjRjdX9dqzXynWFYzz6q4BVjX4qfMXZ/BZ6rJy02hJ/TOFXVIPEHBZ6Q0l2dUnKsmEmUkEQnkyFE1hmcS3r9d2DyJLmLYvS0PAxaXLa9nVF+XxjZ35Hs67idN9UXTxJg/AQCRJIkebqz66vhMDuDRHs0FDsZQpAo/RkvqNHUEefnt/voczJaN7ku0ZiNIxJPYkE2YeEQjlgWEYDERSE84PSmY03t43zMJqL54cfJvPlg+vrqPSa+NXr+41RTder93CYDTFcLxwK32yZWRz1XhONleNJDI8vbWH2WUultSWZP348ZSGgcFgLP/PKXi3pP5/XttLawGX1MOBSjKXjdaeCAMmeM0KwnQSgVAexNMasVQGm2Vif/539gVJZXTWNgVyNLLssKsK150yh3ha4ycv5H/DSkmS8Not7A9nSM7w7QWGYinCyVRONlf94+YukhmdS1bU5mRZNpJK0xRwYbPIxE2wI7xdVbj1QyMl9XcXeEk9gKrIuG0WNneGDizdC8LMIAKhPIgkMxiML5H5YK+3DwKwpqk0B6PKrlUNpZzYXMYruwZ4ffdgvoeDXVVI67B/aOZ2nDYMg72DMRw52Fw1ren8fkMXAZeVD+agkiqt6SiyRFWJg7mVHsLxjCnyWZrK3Hz8hEY6gwn+q4B3qR/lsCooksSmjiAJEwSbgjAdRCCUB4PRFNYJVuvohsEbuweZ5XdQ4yuMvjifPKkJp1Xhvhd2muJN1WOV2TMQm7Edp0PxDIPRVE6Wxf6yo4/BaIoLl9VgyUElWiiRZpbfidUiU+62UeGxEUnlPxACuGhZDSvqfDy9tYeX2gp3l/pRXodKIq2xvTtkinwsQcg1EQhNs5H8oOSElybaeiMMxlKsLYDZoFEBt42PHd9AXzjJr1/fm+/hoMgSVovMrhnacbpjOJaTzVUNw+B3b3dgV2U+tKgqq8cGxpqFVnntwMhMalO5C80wTNHJfLSk3mu38MNnd9AXLvwcm1Knlf5IirZeUUkmFD8RCE2zWEojlTawTjA/aHRZbHVj4QRCAOcurqa5ws269R3s7o/mezh47Rb6Iyn6wjNrn6VIMkN3MJGTzVU37A/SPhDjrAWVOZltCifSVHjth3Q/dtss1HgsBGPmmN0rdVm5+YwWokmNf3t6e8HPpEiSRMBlY99glP2ikkwociIQmmaj+UET9fruQTx2C/OrvFkfUy4pssSNpzYDcM+zbXkvYZckiRKHyo6+CKkZlDjdNRw/0GQzB9tprO9AluCi5bkpmU9pOrP8718OLncqOKwKsZQ5EnvXNJVy3pJqNnWGePitwi6ph4MrycKmqP4UhFwRgdA0G4gkJzwb1BtKsLs/yurG0oLs/Npc4eaCpTVs7wnz1OaefA8Hu6qQyujsHcz/DNV0SKRHNlfNRQPFvYMx/rpniA/MDowtXWVTNJnB61ApOcxMlkWWRhKnk5m8B9ijrjmxkbpSJ//zeuGX1MNIJZnXrrKpIyiakgpFSwRC00jXDQajKZzWifUPemO0WqzAlsUO9tG19QRcVn7+ym6GYvnf8brUaWPvQGxGvLn3hBLohpGTJOZ160e207gkRw0Uo6kMDaXOI+Y1lTpVqr12gnFzPI42i8KtRbJL/Si7qmBVZDZ3hExR9CAI2SYCoWkUTWVIZfQJ7+/02u5BLLLEinpfbgY2DZxWC586eTbRpMZPX9yd7+GMdZzeWeTJoKmMzp6BaE42Vx2KpXh2Wy8Lqjw5WbJNZjRsqkyp68hjH02c1k2SOA3QVObi6hMa6Qom+MlfduZ7OFnhsaskMxrbukJkTPJ3FoRsEYHQNIokMjDBla1YKsPGjiBLZ/ly0gRvOn1gdoDVjX6ea+1j/b7hfA9nbMPJYqjyOZL+SO42V318YxcZ3eDiHOUGhRNp6v2uY85kOa0W5pS7TTHTOOrCZTUcV+/jma29vFgEJfUApS4bA9EUO3rDRf3lQZh5RCA0jQaiSeyWiS2Lvb13mIxuFFTZ/JFIksR1J8/BZpG597m2vCcrj3ScttLaG877WHJB0w3a+2M5yQ1KZjT+sLGLKq+d42dnv9P5SNWVRIV3fDu7V5fY8dhU03REliWJz57RQolD5UfP7qC3SKoUy9w2OoYS7B2cuY1JheIjAqFpFEloE06Ufm33AFB4ZfNHUuG187dr6ukMJnjgr/vyPRwc1pHE6WLsOD0QTRJPaznZXPXP23oJJzJctKwmJwn8wXiaGp993GO3KDJzK93EUuZJnPa7rNx0+twDJfWFv0s9jAR4AZeVHb0RekPFEdwJggiEptFE3wY13eDN9iFml7so94zvm3EhuGhZDY0BJw/+db8pAhC/w0p7f7SoEqcNw2DPQAxXDpZTdcPgkfWduGwKZy6ozPrxDcNA03WqJ9hB3e+yUuOzm2qJbE1TKecvqWZzZ4iHiqCkHkaCzhK7yubOkGmS1AVhKkQgZGLbukOEkxnWFsls0CiLInPjqc1kdIMfP7cz7/kGFkVGVWR29UfzPpZsGYqlCcXThzQhzJY32wfpGI5z7qJqHBOsgByPSDKD32Wd1JJeU5kbWZJMtdT5Dyc2Ul/q5H+LpKQeRirJ7BaFzWJPMqEImDoQ2r9/P5/61KdYs2YNJ5xwArfddhux2MgMQmtrK1dddRXLli3jggsu4M033zzktk888QRnnHEGy5cv55prrqGnJ//9aybqtd2jm6yae7f5yZhf7eVDi6rY2BHk2e19+R7OSOJ0OEFfkTSO2zcYm3A+2nj97u0OFFnigqXVOTl+LKVRX+qc1G3tqsKcchfDcfPMCtksCp8/ex6yNFJSb5YGkFPltlvI6AZbukKmqdgThMkwdSD0la98hZKSEl544QUef/xxdu/ezY9//GPS6TTXX389Z555Jm+88Qaf/OQnueGGGwgGgwDs3LmTL33pS9x55528+uqrNDQ0cMstt+T5bCbu9d2DlLqszCl35XsoOXH1BxrxOVR++tLuvC9LSZKEx2ZlR0/hJ05HUzr90RQee/Zng9p6I2zqDHHy3DIC7uwv18ZTGm6bBb9z8uX+VSUOShxq3p9TBzukpP6Fwt+lfpTfaWUommJHT3hG7t8nFAdT12Pv27ePv//7v8dut2O32znrrLN47bXXeP3110kkElx77bXIsszFF1/M/fffz1NPPcWVV17Jo48+ysknn8wJJ5wAwM0338yJJ57I3r17qa+vn/A4dF1H06Y+/avpGrIkMZ4vTx1DcTqG45yzqBLd0CeeYDQBuq4f8v/p4rBK/MOJDXz/mTZ+9tJubjxtTs7uazznaLVAKJxhb3+YpnJ3zsaSS5qm0RfT8JeQk+fN794eyXO5aFk1mp79JZFQPMm8Kg+GoXO0l9zo6/FIr8vZZU7+umcIm0UyTTf28xZX8tc9Q/xpWy8r6ks4qbnsqNfP1+tyovxOC/sGo9gsEo2BiX9pO9ZjWSxmwnma6RwnMgZTB0If//jHeeyxx1i9ejXxeJynnnqKCy+8kB07dtDS0oIsvzuhNX/+fHbs2AGMLJstXbp07DKfz0d1dTWtra2TCoTa2tqmfjLAzt4kFllCVY79xvz8npGNDqvVGK2trVm5/2PJ1nlORJVhMLdU5emtvTS7EjT5sl/qfbBjnaOmG+zabbCgTMWpmnrC9LDiGZ2BuEa6o53+LO8rNpzQeLFtmOZSlfRgB62DWT08Gd0gltZxx2z0jjN42bhx4xEviwTTtMc0Suy5WSKcjPMbJLZ3Sfzoz22osT784xhbPl6XE6XpBs/s1pnts1DqnNzHytEey2IyE86z0M7R1IHQ2rVreeihh1i5ciW6rnPaaadx1VVX8ZOf/ASPx3PIdb1eL+HwSCJiLBY77OXR6OT2lmpubsbtnvoMQXzXAKoiYRtH7sbPN2/CZpE5d83CCZfcT5Su67S1tdHc3HxIcDldPlcZ5+bfvMPju9LcfeWCnDT/m8g5DsfSuB0WltSWHHFrB7Nq7Q4i922lZe7crD+WP3+5Hd0Y5m8+MIeWBn9Wjw0j+/DVlzqZPY7ZOE3T2LhxI0uWLEFRDv96WpDWeKN9CLsqY8tBC4HJ+pxniG/8YRuP7NS48+L5R5yxyvfrcqKSGY1oQqOp3nfYveGOZDyPZTGYCedppnOMxcY/iWDaQEjTND7xiU9w+eWX8+tf/5p0Os03v/lNbr31VpYvX04kEjnk+uFwGJdrZFrW6XQe9fKJkmU5Kw+qIisosoQiH/1YoXiabd1h1jYFcFhzO0NyMFmWjzm2XKgrdXPlyjr+9/W9PLahmytX1uXsvsZzjqUumb5IgqG4VlBtCxJpjc5gCpdVzvpjGUtleGpLL3WlTlY3BrIeIOqGgSTJ1PhdE3qtKYpyxOs7FYV51V42dYZw2rK/xchkrZ1dxgVLqvn9xi5+t76LD686+vM9X6/LiXJaFXQjw5buMCvrSydcUXi0x7KYzITzNMM5TuT+Tfs1IxgM0t3dzd/93d9hs9lwu938zd/8Dc8//zxz586ltbX1kLXzrVu3MnfuXABaWlrYtm3bIcfq6uqipaVl2s9jMt7cM4RuFPYmqxN1xcpZ1Poc/N8b++jOc6O20cTp1p5QQSVO94aSYBg5yYl5eksPsZTGxctqcjJLFk5kqPDas17uX+GxU+qymq7fzdUnNtJQ6uR/X9vD9u7iKKkHcNssGAZs7gyKSjKhYJg2ECotLaWuro7//d//JZVKEYvF+O1vf8u8efNYs2YNVquVn/70p6RSKR577DH279/PWWedBcBFF13ECy+8wCuvvEIikeAHP/gBy5cvn1R+UD68vnsACVjVmP3lB7NSFZkbTp1DKqNz3/P57y3ksCok04YpGj6OR1rTaR+I4JnAksR4abrBo+904nOonDavIuvHB0hkNGb5J9ZAcTxkWaK5wk0qo5mqs/NoSb0iS0VVUg/gc1gJJdK0dotKMqEwmDYQAvjRj37EG2+8wUknncSpp55Kb28v3/3ud1FVlXvvvZcnn3ySVatWcd9993HPPffg8/kAmDNnDt/85je5/fbbWbt2Lbt37+buu+/O78mMU1rTeWvvMPOrPPimUEJciJbO8nHavHL+umeIl3YO5Hs4+J0qewaiptm/6mj6w0nSmpGTfLKXd/bTG05y3pLqnBw/msxQ4lAnlFcyEV67Sn3AyVDMXD2iGstcXH1CE92hBP9ZRCX1AGUuG13BBO0Dk8vLFITpZNocIRipBLv//vsPe9m8efN44IEHjnjbc889l3PPPTdXQ8uZjR1B4mmN1UWwyepkXHNiE2+0D/FfL+ziuHofzhxsETFeFkVGkWV29kVYauLEaU03aB+I4bFlP5AwDIN16zuwKjLnLcldA8XFtd6c/n3rS110hxLEU1pOumFP1oVLq3lr7xB/3tbLqgY/H5xbnu8hZYUkSZS5bezqj+K0KlSVZH+2TxCyxdQzQjPR6we6Sa8twm7S4+FzWrn6hEYGYyl++eqefA8H34GO0/0R83Qqfq/BaIpYKpOTD/gtXSFaeyKcPr8iJzM2yYyG1SJR6srt7KfVItNS4SGcTOV92fVgkiRx8xlz8TlU7nm2rag2MlVkCb/DypbOEMMm2v9NEN5LBEImYhgGr+0epLrETl0O8iUKxVkLK1lQ7eXxDV3syPPeTJIk4baptPVGTJn8ObK5ajRnM2fr1ncAcNHympwcP5xIU1/qwpKDlgnvVe6xUeaxmy5x2u+0cvMZc4mmNP7tmeLYpX6U1SLjslnY2BEsqjwoobiIQMhE2gei9EeSrG4sNe0yzHSQJYkbT52DLEvc81xb3j8YnFYL8ZTG/kHzJU4Px9IE42ncOdhctXM4zmu7Blnd6KfOP7m9v45m5HGVqPBOT4sCSZKYU+4mo+tkTBbUrmos5YKlI7vUP/jXffkeTlY5rRYwYFNHYVVhCjOHCIRM5LWxZbGZmR90sIaAi0uX17KzL8rjGzvzPRz8TpX2wZjpEqf3DcXG1aBzMh59pxMDuHR5bU6OH4ynqfbZsU9js0O3zUJjwMVQzFyzQgD/cELTSEn963vZ1h3K93Cyyue0Ekmmae0J5/2LjSC8lwiETOS13YO4bAoLq735HoopfHh1HRUeG796dS/9ed4V3qLIKJLE7r6oaXJMQok0/eFkTjZXDSfSPLO1hznlLhbXlmT9+IZhoOk6Nb7pXwKeVerEYVVMt1Rjtcjc+qGRkvq7n2o13fimqsxlozsUZ3d/xDSvIUEAEQiZxkAkSVtvhFUNpdOSL1EI7KrC9afMIZ7WTLFjt8+h0hMyT+L0/sEYFllGzsEy6h83dZPM6FyyvDYny7SRZAa/y4rXPn2d00episzcSjeRZMZ0H8gNARf/cKCk/r/+0p7v4WSVJEmUuey098foHI7neziCMEZ84prEG+1DwMzqJj0eqxpLOXFOgFd2DYxV1OWLJEl47BZTJE7HUhm6Qwm8OajkSms6v9/QSZnbeswd0icrltKoK81+3tF4BVxWKr3mS5wGuGBpNasa/Dy7vY/13ebqfTRViizhd1rZ3h1mKGqOLxSCIAIhk3ht9wCKLHFcDjazLHSf/OBsHKrCf76wk0Ray+tYnFYLsVSGjqH8fqPtCiaQJSkn22m80NrHUCzNhUtrcjI7GU9puG0WSvPYMFSSJGaXu8joRt6D2vcaLakvcag8vC1Kb7i4gqHRSrJNHUGiJsu5E2YmEQiZQCKtsWF/kMU13pxU/xS6gNvGx45voDec5P/e2Jvv4eB3WtndH83bm3gyo7FvMJaTZaXRBooOVeHsRVVZPz5AOJmmPuBAzkEQNxFOq4U55W6GTNjjxue0ctPpc0hkDL7/zI6iSzB2Wi1IksTmjhBJUUkm5JkIhExg/b5hUprOGlEtdkTnLammucLNuvWdtPfnt22/eiBxeleeEqd7Q0l0w0DNwWzN+n3DtA/EOGthZU6C8rSmY1Ekytz2rB97Mmp8dtw2i+mqAQFWNvg5sc7O1q4wDxRZST1AiUMlmsrQ2h1GM1muljCziEDIBEZzX9Y0zsxu0uOhyBI3ntqMYRjc81wbep7fOH3OkcTpgWnOc0hrOnsGojlLMl63vgNZgouW5aaBYiiRZpbfmZM9yybDosjMrfQQTabz/pw6nPOanTSUOvn163vZ1lVcJfUwkqvVG0nSGTJf4rowc5jj3WgG0w2DN9oHaSh1UlVijm/JZtVc4eaCpTVs6w7z1OaevI5lNHF6R8/0Jk4PRJKkND0nvYP2DER5a+8wH5hTRqU3+89F3TDQdYOqHBx7KkpdVmp8DlMukamKxD+dNXdkl/qni2uXehh5HQVcVrqjmqgkE/JGBEJ51toTZjieFsti4/TRtfUEXFZ+/sruvH9wjSZOT9cbuK4btPfHcOVoO41H1o80rsxVA8VwIkOF147LhHlwTWVuJCRTdj5uCDi55sQmekJJ7nt+Z76Hk3WKLOG1yWzviTCQ535hwswkAqE8G1sWE4HQuDitFj75wdlEkxo/fXF3voeD32llV9/0JE4PxlJEU5mc7Cs2FE3x7PZeFlR7mVflyfrxYSTJe5ZJ99BzWBXmlLsYipvzg/j8Je+W1D/f2pfv4WSdRZZw2y1s7gwRTpivpYFQ3EQglGev7R7E51BpqczNh08xOmFOgFUNfp5r7WP9vuG8jkVVZCxy7hOnDcOgfSCKU83NbMrjG7vI6AaX5mhz1Wgyg9eh5mQH+2yp9jkocVhN+UE8tku9U+XHz7XRU0S71I9yqAqKJLG5M5T3NhnCzCICoTzqDibYOxhjdWNpTroDFytJkrjulDlYLTL3PteW9+WMEodKbzi3idPBeJpgLI3Llv3coERa4w+buqgusbOmKTcJ+7GURkOp09SbCSuyxNwKN/G0ZspydZ/TymfPaCGW0rj76eLapX6U16GSSGts7w6ZbmNcoXiJQCiPXm8fAMSy2GRUeu387Zp6OoOJvO/WLUkSbpuFthwmTu8dHNlcNReBxJ+39RJOZLh4WU1OGjQmMxpWi0SpK38NFMfL57Qyy+/Me/7Zkaxs8HPRshq2doX47ZvFV1IPUOq00h9JsdNE+/oJxU0EQnn02u5BrIrM8jpfvodSkC5eVkNjwMkDf93P/qFYXsfitFqIJnOTOB1OpOkPp3KyuapuGDyyvgO3zcIZCyqzfnwYGX99qatg9tBrCDixyBLJjDmXZz7+gUYaA07+743iLKmXJIkyt419g1H2D4pKMiH3CuOdqQhFkhk2d4ZYOqsEu5r95Y6ZwKLI3HBqMxnd4N7nd+b926PflZvE6Y7hOIos5WT59I32QTqDCc5dXJWT5+HI8o1EhdeW9WPnil1VaK5wm3IfMhjZouLzZ8/DIstFWVIPIEsSpS4brb1h+kUlmZBjIhDKk7f2DKHpBmtzlJMxUyyo9vKhRVVs2B/k2e35raZRFRlFlmjvz96Ufjyl0TWcyFmS8e/e7sAiS5y/pDonxw/F01T77AUX7Fd67ficqmmDoYaAi2tObKQnlOTeIiyph5HXk9eusqkjSMiECexC8RCBUJ68dqBsfnWj2GR1qq7+QCMlDpWfvrQ77xU/PodKVyjBYJYSp7uCI0sDucjd2dETZnNniJNbygm4sz9jYxgGaV2nxmfOkvmjkWWJ5goPqYxu2qTk85ZUs7rRz3Pb+3hue2++h5MTdlXBqshs7hCVZELuiEAoDzKazl/3DtJc4c7JB9BM47Zb+MRJTQTjaX7+cntexyJJEh7bSMfpqVa9JDMa+4ZiOZsNWre+A4BLctRAMZLMUOqy5mw7kFwrcajUBxwMxcy5NCNJEjedPlJSf+/zO+kuwpJ6AI9dJZXR2NYlKsmE3BCBUB5s6QoRTWqsFdViWXNqSznLZpXw1JYeNncG8zoWp9VCNJWhc3hqH0y9oSSaRk42V+0NJ3ixrZ/ldT6aylxZPz6MlMzXlTpzcuzpUlfqRFVk085G+JxWPnegpP7fntpu2tmrqSp12RiIptjRG857LqBQfEQglAejy2IiEMoeSZK4/pRmLLLEj5/bOa37fx2O32llZ19k0omsGU1nz2A0J5ViAI+904Vu5G42KJ7ScNks+J3mL5k/GptFYe6BxGmzfgAfN1pS3x0u2pJ6gDK3jY6hkd5rgpBNIhCaZsaBTVbL3DYaA7n5Jj5T1fodXLWqjr2DsbF9s/JlNHF69yR7ofRHkiTTek6SjGOpDE9t6aa+1Mlx9b6sHx8gnEzTEHDkJLdpulV47ZS5raZNnIZDS+q3FmFJPYxUkgVcVnb0Rugt0mVAIT9EIDTN9g/F6QomWNtUauouu4XqipWzqPU5+PUbe/OeM1EyycRpXTfYMxDDnaPNSZ/a3EMspXHJ8pqcPAfTmo5FkYom/02SJOZUuElrumlzVKwWmVs/NH+kpP6p7dOy910+WBSZErvK5s6QqQNTobCIQGiavblnCBDdpHNFVWRuOHUOqYzOf+a5t5AsSbitFnb0TixxeiiWIpLMzeaqmm7w6IZOfE6VU+dVZP34AKFEmlqfA5ulsErmj8ZjV2ksczEUM++Hb32pk2tOaqI3XJy71I+yqwp2i8KmjmHiKXPmbgmFZUKB0Hnnncfw8PDYz3fccQeDg4NjPw8ODnLcccdlbXDF6M32IRyqwpLaknwPpWgtneXjtHnlvLlniJd3DuR1LC7baMfp8c1OGYbBnoEojhz13XmprZ++cJLzl1TnJAlbNwx03aC6pPBK5o+lrtSJXZVN3cDwvMVVrGks5bnW4i2ph5FKUU2Hrd2hvOcDCoVvQu+Eu3btQtPejcAff/xxotHo2M+6rhOLiUS2IwnG07T2hDmu3peTDyHhXdec2ITbZuEnf9mV9w8uv9PKrv7xJU6H4hmGYumcLIsZhsHv1ndgtcicuzg3DRTDiQwVXjuuHC3r5ZOqyMyt9BBOZEybOC1JEjedMRe/U+XHzxVvST2MvK6Goil29ITRi7RaTpgeU/o0Ptybgch7ObK39w5hQFZ2+M5oOom0RjIz8l8qo5PWDv0vo400gxv9TzdG/jMO/FfMfE4rV5/QyGA0xS9f3ZPXsaiKjCyNL3F631AMqyLn5HW0pStEW2+EM+ZX5Kw3UTKjUVuADRTHq8xtpdJrN3V+SolD5bNnthBPa3zvyW1Fmy8EByrJhkUlmTA1xfe1zcT+umcIWYJVDVPrJq0bBv3RJB6bOvazgcHoZ6wBGAYYvPuLsY/fsV+NXCohoekawwmN/nASWT7oQ3j0upKBdOCYSNLIvznwOzhwlNGjgs9hNcWM11kLK/nTtl4e39DFqS1leR1LiUOlO5SgqsR+xCTiSDJDXziZs13af/d2BxJw8bLclMxHkxm8dhWfszAbKI6HJEnMLnfx+u4kaU03xfP8cI6r93PVqjp+++Y+vvjwBr564aKiSV4/mCxJlLmstPWGcagylUW4JCvk3oQCIUmS0HUdXdcxDOOQn4FDls2EQyXSGhs7gsyr8uCd4rfxSCJDpdfO0lm+o15vZObnwL95dwbPGLt8JHTRNB1XpIOlcwIoinLQbY59+4MDK4DBaIrd/VEqPPYpnWM2yJLEjafO4ebfrOfHz+/ik0vy90EgSxIuq4W23gglDvWwO7F3DsWRJXKyuWrncJzXdw+ypqmUWn9uPiyiqQyLa7xFPyvsslmYXe6irTdiiuf5kfzd2nocqsL9r7Tz+Qff4asXLqKhCFt2WBQZn9PKlq4QdtVCSREH4kJuTCgQMgyDk08++ZCfzznnnEN+LvY3wcl6ZecAyYzOqoapV4slMhotJZ5jXk+SJA59OA7/2GgSWBUJu6qgKFNL0nXbLPRHUoQTaTwm2FqhIeDikuW1PPTWfl7Zb7Bgfv7G4rJZ6A0n6BxOUB84tONyIq3RMRzPWQPCdes7MMhdA8VkRsNmkYty1uFwan0OuoIJosmMafOhJEniipWzCLit/OBPO/jCwxv4l/MWFmWhhs2ikFENNnYOs7K+FIe1eCoWhdyb0Cv4F7/4Ra7GUfT+tK0HmPomqyPT8ZJplx8sisy8Sg9/3TOE02qYoqHeR1bX8ZcdfTyxM8bFxyep8OZv24fRxOkyj/WQ8viu4TgGufl7heJp/rStl+ZyN4tqvFk//uh9NFd4DjvTVYwsiszcCjfr9w3jsCo5mcXLltPmVeB3WvnWH7by5Uc28U9ntfDBueX5HlbWuWwWhuMpNncGWVYnClKE8ZtQILRmzZpcjaPoNZe7+WBz2ZR34o4kMlT7HKZ+kZc4Rzar3DsYo9yd/6UDu6rwqZOb+Mbj2/h/L7Zz23kL8zYWVZGRgPb+KAtrRr6ZpzI6+4Zi+By5mQ364+ZuUhmdS1bU5mTGVtNHZoIrvDNjNmhUqctKdYn9QF6Xuc99eZ2Pb1+2hK89toXvPrmdgWgqZ7OD+eRzWOmLJGjtDrOg2otsgi9igvlN6NM0Go1yxx13cNJJJ3H88cdz00030dfXl6uxFZWrT2zihtOap3yctK5T7jH3my5AfakLh2rJe+n6qFUNfpZUWHll1yBvtA8e+wY55HNa6RyOj3Wc7g0lSGtGToLbtKbz+IZOytw2Tpwz9WrFwwnF01T77DnZDsTMJEmiqcwNSAXRy2Z2uZvvXbGUOr+D/35xN//vL7vQi7B6tMxloyuYoH0geuwrCwITDITuuusunn32WT72sY9x3XXX0draym233ZarsQnvkUhruKwWvCbIvTkWq0WmpdJNOJE2zZvtRS1OHKrCfc/vzOtu4rIk4bKptPVESGY09gxGc/aYPr+9j6FYmouWVedk2cowDNK6XpQNFMfDYVWYXe5iKDaxbVTypcJr5zuXL2VRjZdH3unke09uL4ggbiIkSaLMbWNXf5TuYDzfwxEKwITeGZ999lm+/e1v8+lPf5qrr76an/zkJ7z00kukUoXxJlDowsk0NT5HwUz3Btw2av2OCe+1lSsldoWPrq2jN5zk/97Ym9exuG0Wwsk0bT0REjnaXNUwDNat78ChKpy9sCrrx4eRkv9SlxWv3ZwJw9OhxufAY1eJJMwx+3ksHrvK1y9azIlzArzY1s+XH9lUMGMfL0WW8DusbOkMMVwgQaqQPxMKhHp6epg3b97Yz/X19dhsNnp7i7eVu1kYI7XuBNy5ySPJlaYyN6oi5XUG5mDnLq6iudzNuvWdtPfnd+rc77Sydyh3m6u+vXeYPYMxzl5YmbPKpnhao67UOaOrRRVZYm6Fm1g6g1YgHY5HN2m9cGk1mzpDfOHhDfSFk/keVlZZLTIum4WNHUHTLNEL5jSpufLR3kGapiFJEpqmjf1utKeQkF3RlIbPqZq2VPdI7KpCS6WHYDxlim7Wiixx42nNGIbBPc+15XXZTlVkqr2OnGyuCiMl87IEFy2rycnxE2kNp9WSs5L/QuJ3Wanx2RmOF87sgyJLfPKDs7nmxEb2Dsa49cF38v7lINucVgsYsKkjRCojPpuEw5tSH6HR3x3cSwhg69atUx+ZcIhYKsOc8sLs/1HusVFd4qA/Yo7qmuYKN+cvqeaxDV08tbmHcxbnZtloPHLVXqB9IMrb+4b54NwyKry5qdwLJdLMr/KYokWCGTSVuekPpw70VCqMxHFJkrh0xSxKXTb+/ZnWA72GFhyzWWsh8TkPVJL1jFSSieer8F6ij1AB0PSR/jKF2jF1ZFsCNwNR83xI/N3xDby0c4Cfv7Kb42eX4iuyWY1H3+kCctdAMa3pWBSJsgKoYJwudlVhToWLLZ1hKr35f45PxCkt5fidKt/8w1a+8uhmPntmC6e0FE+voTKXje5QHLsqM6fcPaOXcoX3y3ofoW3btk16MMLhhRNpKjw2UwQQk+WwKjRXuNjSFabCnZtNRSfCabXwqQ/O5ttPbOO/X9rNLWfNO/aNCkQoqfNC6yCLary0VB67A/mk7iORZpbfUdDPyVyo8o50nA7F01PeSme6LZ3l4zuXLeWrj23mrqe2MxBJcmmOek9NN0mSKHPZae+P4VAVav35a6oqmE9W6mkHBwf5+c9/zsUXX8yll16ajUMKB0lpOlVFUJ5c5XVQ5rKaZufuE+YEWNXg57ntfbyzbzjfw8mal/clyOgGF+doNkg3DHTdmLEl80cjyxLN5R6SGb1gEqcP1ljm4ntXLKO+1MnPXm7nv/6yqyDP43AUWaLUZWV7d9g0layCOUw6EEqn0zzxxBNcd911nHzyyfzhD3/goosu4sknn8zm+Ga8ZEbDpsqUFNi3y8ORZYnmSg8Z3TBF7xJJkrjulDlYLTI/fq6tKJIpE2mNV/YnqC6xs6Zx6vvaHU44kaHCay+4xP3pUuJUmeV3MBgrzCqsco+N71y+lMU1Xh7b0MV3n9xWFK8NGClQcNksbO4IEkmKSjJhxIQDoXfeeYevfOUrnHjiifzkJz9h1apV6LrOt771LT7xiU9QX1+fi3HOWJFkhtoSR9Ek+LltFuaUu03TgK7Sa+dvVtfTGUzw4F/35Xs4U/bn7X3EMwYXLqvO2XMmmdGoneJWMcWuocyJVZFN0zZiotw2C1+/eDEnNZfx8s4B7nhkE+GEOWZyp8pptSBJEls6QiQzhfn4CNk1oUDonHPO4V/+5V+orKzkt7/9LQ8//DDXXnttUawhm5FxYAmi2BJSa/0OShwqIZMskV2yvIaGUicP/HU/+4di+R7OpGm6wWPvdOFUJc6Yl5tE11gqg9eumnbTX7OwWRSaK9wE42lTtI2YDFWRufVD87hkeQ1bukJ84aEN9IYS+R5WVpQ4VKKpDNu7w0Wz9CdM3oQCob6+PmbNmkVdXR0VFRW5GpNwQDyt4XGoOWu4ly+KLDG30kMyo5ExwRKZRZG58bRmMrrBvc/vLNgPrtfbB+kKJji+1o4tR/t+RZIZ6ksd4svPOFR47JS5rYQKuGuzLEl84qTZXHtSE/uH4tz64AZ29UXyPaysCLis9IWT7OqLFOxrXsiOCQVCL774Iueccw4PPfQQJ510Ep/73Od45plnkCRJvDHmQDSpUeuzF+XftsSh0ljmYtAkS2QLqr18aGElG/YHeXZ7YW4kvO7tDiyyxAl1uekblMro2CwyAXdxzVDmiixLzK5wk8poBT/rcPHyWv75nPmEEmm++PBG1hdBcYEkSQRcNvYMROkYEnuSzWQTCoQcDgeXXHIJP//5z/n973/PvHnzuOuuu8hkMvz7v/87Tz/9NPG4eEJlg6YbSBKmaECYK3WlTlw2i2mSFj9+QiMlDpWfvrS74PIhWnvCbOkKcXJLGV5b9jdXBQgmUtSVOnOyeWux8tpVGgLOgk2cPthJzWV8/eLFyDJ89bHNPLu98LdWGqkks9HaE2EgUviPkTA5k35Hq6mp4brrruOJJ57gN7/5DYFAgNtvv50PfOAD2RzfjBVJZijzWHOyGadZqIpMS6WHaMocezR57CqfOKmJYDzN/S+353s4E7JufQcAFy2rzsnxNd1AQqIyR12qi1ldqQubRSaeKvzE3CW1JXznsqX4nVb+7elWHvjrvoJfVlIVGbfNwqaOUMF9ARKyY0KBUGdn52H/Ky8v51Of+hT/93//x0033ZSrsc4oyYw2I/q0lLqs1PnN84351JZyls4q4cktPWzpCuV7OOPSG0rwUls/K+p8NAZcObmPUDxNtc9e1IF5rlgtMi2VXsJJc+y3N1UNARd3XbGUxoCTX7yyh/teKPxeQw6rgkWW2NwZKthKP2HyJpSFe8YZZ4z9++AX9HtzWK655popDmtmS2s6qiLhK4LeQePRWOakL5IglsrkbAPS8ZIkietPmcNnfv02P362jX//8HLTLwU9+k4nugGXrMhNA0XDMEjr+owIzHOlzG2l3GNnOJYuik1qA24b375sKd/641b+sLGLwWiSz589r6A7jXsdKgPRJNu7QyyqKTH9617Ingl96tjtdkpKSrj44os555xzcLly8+1zpgsnMtT4HDPmhWizKMyr9LJ+3zB2VUHOc3L4LL+TK1fO4tdv7GPd+k6uWDkrr+M5mmgyw1NbemgodbKizoduZL8KL5LM4HeqeO3FVb04nUb323tj9+CBLzqF/9p22Sx89cJF/MefdvB8ax+3r9vEHecvLLitRQ4WcNnoDSXY2RelpVLsSTZTTOjV+PLLL/O5z32OjRs38tGPfpT/+I//YO/evdTV1VFfXz/2nzA1GV2nwjOzcjHK3FZqSuymabR4xco6akrs/PqNvXSbuHfKk5u7iac1Llmeuz2h4mmN+oBLfChMkdtmYXa5yzTP8WxQFZl/OquFy4+rZVt3mH9+aIOpXy/jUeaxsW8wyv5BUfgzU0y4auziiy/mpz/9KX/84x+ZN28e3/nOd/jgBz/Id77zHdJpkWg2VfGUhstqweuYWd++JUliToUbRZJMsUZvtcjccFozqYzOf5q0t1BG03lsQxd+p8opOWqgmEhrOK2WoljOMYManwOX1UIsZY5KyWyQJYmrT2jiUx+cTedwnFsffIe23sLtNSRLByrJesP0i0qyGWHS87OVlZV86lOf4lvf+haNjY38/Oc/JxYr3K68ZhFJpqn1z8yGdXZVYW6lebrxLpvl49R55by5Z4iXdw7kezjv89LOAfojSc5fWpOzpZZQIk2dv3i2eMk3VZGZW+kmnMygm+A5nk0XLqvhC+fMJ5rMcNvvNvLWnqF8D2nSVEXGa1fZ1BEkJCrJit6k3j27u7v5yU9+wnnnnccNN9zAkiVLWLduHSUlJdke34wy+sYYcM/cb98VHjvlXhvDMXO8+XzixCbcNgs/+csuU32LNwyDdW93YLXInLuoKif3kdZ0LIpEubd4e1nlQ6nLSrXXTtAkW8xk04nNZdx58WIUWeLrj2/hma09+R7SpNlVBasis7lDVJIVuwkFQg8//DAf//jHOe+882htbeVLX/oSzz//PF/4wheYN29ersY4Y8SSGqVuW94rp/JJliWay91ohjl2qPc5rVx9QiOD0RS/enVPvoczZlNniLa+CGcuqMxZcmookabW5yjoSiAzkiSJpnIXukme49m2qKaE716+lIDLyn/8aQe/ebNwew157CqpjMbWrpAptgMScmNCn7i33XYb1dXVXHHFFbhcLt566y3eeuut913v5ptvztoAZ5J4JsOcClGJ57JZaK5ws70nRKUn/yXbZy2s5E9be3h8Yxenz6+kucKd7yGx7u0OJODiZTU5Ob5+YMPfKlEynxNOq4U55W5ae8JFWRhRV+rke1cs42uPbeZXr+6hP5zkulPmFOQSa6nLRm84wY7eMPOrvDMybaHYTSgQWr16NQBbt2494nXEk2RyMpqOIkv4RFIqMJJU2htOEIynKclzOa4sSdxwajOf/e167nm2jbuuXJbXN/T9QzFebx9kbVMpNb7cBCrhRIYKr73oNvw1k+oSO13DCSLJTFH+nUtdVv71siX86x+38cTmbgajKW790LyCbMpZ5rbRMZTAabXQkKOmpUL+TOjV98tf/jJX45jxwskMFR47Vkvh9xfJhtEd6t/cPUhGU/LeU6mxzMUly2t46K0OHt/YxUU5mokZj0ff6QTg0hw1UISR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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.lineplot(x=\"n_samples\", y=\"MAPE\", data=result_scores[\"test\"].query(\"target == 'BMag_ha'\"), markers=True, errorbar=\"se\")\n",
    "plt.plot(np.arange(4300), [365.34] * 4300, linestyle=\"--\", label=\"\\power{} baseline\")\n",
    "plt.xlim(0, 4300)\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "aea2c2c8",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
